web-dev-qa-db-ja.com

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秒の値をハードコードする代わりにスクリプトに適用することは可能ですか?

362
Boris Pavlović

動作確認済み

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
516
Ocaso Protal

$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
307
Emiliano Poggi

powershellにデータタイプの分析と決定を任せる
このために内部的に 'Variant'を使用しています...
そして一般的に良い仕事をしています...

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
    }
4
ZEE

ファイルに次のコードを使用してpowershellスクリプトを作成します。

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

これはパスパラメータを持つスクリプトを作成します。指定されたパス内のすべてのシンボリックリンクと、指定されたシンボリックリンクのターゲットを一覧表示します。

2
JDennis

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
}
1
Froggy