有一个名为 "itunesForward.ps1 "的PowerShell脚本,使iTunes快进30秒。
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + 30
}
它是用提示行命令执行的。
powershell.exe itunesForward.ps1
是否有可能从命令行传递一个参数,并在脚本中应用它,而不是硬编码的30秒值?
经测试为有效。
param([Int32]$step=30) #Must be the first statement in your script
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}
呼叫它时使用
powershell.exe -file itunesForward.ps1 -step 15
你也可以使用$args
变量(这就像位置参数)。
$step=$args[0]
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}
那么它可以像这样调用。
powershell.exe -file itunersforward.ps1 15
让Powershell分析并决定数据类型<br>。
内部使用一个'变量'来做这个事情...
并且通常做得很好...<br>。
param( $x )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 )
{ $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x }
或者如果你需要传递多个参数
param( $x1, $x2 )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 )
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $x1
$iTunes.<AnyProperty> = $x2
}
*从浴池文件(.bat)或CMD中调用脚本**。
*Powershell核心
pwsh.exe -NoLogo -ExecutionPolicy Bypass -Command "./Script.ps1 -Param1 Hello -Param2 World"
pwsh.exe -NoLogo -ExecutionPolicy Bypass -Command "path-to-script/Script.ps1 -Param1 Hello -Param2 World"
*Powershell
powershell.exe -NoLogo -ExecutionPolicy Bypass -Command "./Script.ps1 -Param1 Hello -Param2 World"
powershell.exe -NoLogo -ExecutionPolicy Bypass -Command "path-to-script/Script.ps1 -Param1 Hello -Param2 World"
*Powershell Core或Windows Powershell。
& path-to-script/Script.ps1 -Param1 Hello -Param2 World
& ./Script.ps1 -Param1 Hello -Param2 World
Script.ps1 - 脚本代码。
param(
[Parameter(Mandatory=$True, Position=0, ValueFromPipeline=$false)]
[System.String]
$Param1,
[Parameter(Mandatory=$True, Position=1, ValueFromPipeline=$false)]
[System.String]
$Param2
)
Write-Host $Param1
Write-Host $Param2
你也可以直接在PowerShell命令行中定义一个变量,然后执行脚本。 变量也会在那里被定义。 这在我无法修改签名脚本的情况下帮了我大忙。
比如说
PS C:\temp>
$stepsize = 30
PS C:/temp>
.itunesForward.ps1
与iTunesForward.ps1是
$iTunes = New-Object -ComObject iTunes.Application(应用程序)
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $stepsize
}