小编典典

如何将参数传递给 PowerShell 脚本?

all

有一个名为 PowerShell 的脚本itunesForward.ps1可以让 iTunes 快进 30 秒:

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + 30
}

它使用提示行命令执行:

powershell.exe itunesForward.ps1

是否可以从命令行传递参数并将其应用于脚本而不是硬编码的 30 秒值?


阅读 188

收藏
2022-03-11

共1个答案

小编典典

测试为工作:

#Must be the first statement in your script (not coutning comments)
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

多参数语法(注释是可选的,但允许):

<#
    Script description.

    Some notes.
#>
param (
    # height of largest column without top bar
    [int]$h = 4000,

    # name of the output image
    [string]$image = 'out.png'
)

还有一些高级参数的例子,例如
强制

<#
    Script description.

    Some notes.
#>
param (
    # height of largest column without top bar
    [Parameter(Mandatory=$true)]
    [int]$h,

    # name of the output image
    [string]$image = 'out.png'
)

Write-Host "$image $h"

默认值不适用于强制参数。您可以省略=$trueboolean 类型的高级参数[Parameter(Mandatory)]

2022-03-11