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) #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にデータタイプの分析と決定を任せる
このために内部的に '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
}
ファイルに次のコードを使用してpowershellスクリプトを作成します。
param([string]$path)
Get-ChildItem $path | Where-Object {$_.LinkType -eq 'SymbolicLink'} | select name, target
これはパスパラメータを持つスクリプトを作成します。指定されたパス内のすべてのシンボリックリンクと、指定されたシンボリックリンクのターゲットを一覧表示します。
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
}