有一个名为 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)
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}
调用方式如下:
powershell.exe -file itunesForward.ps1 -step 15
多个参数的语法示例(注释是可选的,但允许存在):
<#
脚本描述。
一些注释。
#>
param (
# 最大列高度(不包含顶部栏)
[int]$h = 4000,
# 输出图像的名称
[string]$image = 'out.png'
)
以下是一些高级参数的示例,例如强制性参数,更多信息请参阅高级参数:
<#
脚本描述。
一些注释。
#>
param (
# 最大列高度(不包含顶部栏)
[Parameter(Mandatory=$true)]
[int]$h,
# 输出图像的名称
[string]$image = 'out.png'
)
Write-Host "$image $h"
默认值在必需参数中不起作用。对于布尔类型的高级参数,可以省略=$true
。