iTunesを30秒早送りするitunesForward.ps1
という名前のPowerShell
スクリプトがあります。
$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) #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
また、$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
Powershellにデータ型を解析させて決定させる<br>。
内部的には '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
}