2016-05-26 11 views
1

添付スクリプトを使用してリモートマシンに引数を渡そうとしています。しかし、例外をスローしている: "null配列にインデックスできません"。どこが間違っていますか?引数をリモートマシンに渡す?

param(
[Parameter(Mandatory = $True, Position = 0)][ValidateNotNull()]$server = $(throw "Please provide Environment name. Ex: cyclone,jwoww or joker"), 
[Parameter(Mandatory = $true, position = 1)][string]$logType = $(throw "Please provide type of log you want"), 
[Parameter(Mandatory = $true, position = 2)][string]$howMany = $(throw "Please provide number of log rows you want") 
) 

invoke-command -computername $server -credential abc\def{ 

Get-EventLog -logname $arg[0] -newest $arg[1] | Out-File c:\EventLogs.txt 

} -argumentlist $logType,$howMany 

答えて

1

だけInvoke-CommandコマンドレットにParamブロックを追加し、代わりに$arg[0]$arg[1]

invoke-command -computername $server -credential abc\def{ 
    Param($logType, $howMany) 

Get-EventLog -logname $logType -newest $howMany | Out-File c:\EventLogs.txt 

} -argumentlist $logType,$howMany 
+0

のパラメータ名を使用するには、すでにこれをしようとしました。内部のスクリプトブロックが実行され、値を要求する例外がスローされたときに値を要求しません。 –

+0

'Invoke-Command'呼び出しの前にwrite-hostを追加し、あなたのパラメータをダンプするだけです:' Write-Host $ server; Write-Host $ logType; Write-Host $ howMany'は、パラメータをエスケープするためにスクリプトに正常に渡されます。 –

+0

パラメータがスクリプトブロックに渡されていません。私がスクリプトブロックの中にparamsを入力するように頼んだら、パラメータを尋ねるのではなく、値を入力しなければならないというエラーがスローされます –