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

发布时间 2023-11-13 15:01:20作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=我如何将参数传递给 PowerShell 脚本?

有一个名为 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