关于命令行:如何将参数传递给PowerShell脚本?

How to pass an argument to a PowerShell script?

有一个名为itunesForward.ps1PowerShell脚本,它使iTunes快速前进30秒:

1
2
3
4
5
6
$iTunes = New-Object -ComObject iTunes.Application

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

使用提示行命令执行:

1
powershell.exe itunesForward.ps1

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


作为测试的工作:

1
2
3
4
5
6
7
8
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
}

它用电话

1
powershell.exe -file itunesForward.ps1 -step 15


你可以使用变量,也$args似的位置参数):

1
2
3
4
5
6
7
8
$step=$args[0]

$iTunes = New-Object -ComObject iTunes.Application

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

然后,它可以调用类:

1
powershell.exe -file itunersforward.ps1 15


PowerShell易于分析和决定的数据类型 internally辨别"变异"这… 和普遍的。一个好的工作。

1
2
3
4
param( $x )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 )
    { $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x }

如果你需要两个或多个参数的通

1
2
3
4
5
6
7
param( $x1, $x2 )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 )
    {
    $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x1
    $iTunes.<AnyProperty>  = $x2
    }

PowerShell脚本create a与下面的代码的文件。

1
2
param([string]$path)
Get-ChildItem $path | Where-Object {$_.LinkType -eq 'SymbolicLink'} | select name, target

这个脚本创建一个参数和一个路径。它将覆盖全symboliclinks在AS路径提供抵抗的specified目标的符号链接。