0

PowerShell スクリプトを実行して、メッセージでフィルター処理しようとしています。

param($server, $message)
Try
{
    Invoke-Command -computername $server {Get-Eventlog -logname application -source "source" -message $message | Format-List}
}
Catch [Exception]
{
    Write-Host $_.Exception.ToString()
}

次のパラメーターを使用してスクリプトを実行しようとしています。

GetEventLog.ps1 "SERVERNAME" "TEXT_TO_FIND"

パラメータ 'Message' の引数を検証できません。引数が null または空です。NULL または空でない引数を指定して、コマンドを再試行してください。+ CategoryInfo : InvalidData: (:) [Get-EventLog]、ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError、Microsoft.PowerShell.Commands.GetEventLogCommand

何らかの理由で $server パラメーターをうまく処理しますが、$message 変数について不平を言う場合。

どうすればこれを修正できますか?

4

3 に答える 3

3

Invoke-Command なしでイベントを取得できます。

Get-EventLog -ComputerName $server -LogName application -source "source" -message $message

コマンドがエラーを生成した場合、それはおそらく終了エラーではないため、キャッチすることはできません。エラーを終了させるには、ErrorAction パラメーターを使用します。

   Get-EventLog -ComputerName $server -LogName application -ErrorAction Stop ...
于 2012-04-13T19:50:59.630 に答える
1

この方法を試してください:

Invoke-Command -computername $server {Get-Eventlog -logname application -source "source" -message $args[0] | Format-List} -ArgumentList $message
于 2012-04-13T19:43:39.333 に答える
0

-ArgumentList パラメーターを使用して、引数として $message を渡す必要があります。man ページの例 9 を確認してください。

Invoke コマンド

invoke-command -computername server01 -scriptblock {param($log, $num) get-eventlog -logname $log -newest $num} -ArgumentList $MWFO_Log, 10
于 2012-04-13T19:39:26.810 に答える