我正在尝试运行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变量。
我该如何解决这个问题?
答案 0 :(得分:3)
您可以在没有Invoke-Command的情况下获取事件:
Get-EventLog -ComputerName $server -LogName application -source "source" -message $message
如果命令生成错误,您将无法捕获它,因为它可能不会是终止错误。要使错误终止,请使用ErrorAction参数:
Get-EventLog -ComputerName $server -LogName application -ErrorAction Stop ...
答案 1 :(得分:1)
尝试这种方式:
Invoke-Command -computername $server {Get-Eventlog -logname application -source "source" -message $args[0] | Format-List} -ArgumentList $message
答案 2 :(得分:0)
您需要使用-ArgumentList参数传递$ message作为参数。查看手册页的示例9:
invoke-command -computername server01 -scriptblock {param($log, $num) get-eventlog -logname $log -newest $num} -ArgumentList $MWFO_Log, 10