将参数作为parameter passing给-filterXPath get-wineventLogs

您好我做了PowerShell脚本,我正在采取三个论据(在参数块),并将它们作为parameter passing给-FilterXPath。 但是我无法得到结果。

$事件ID = 7036
$服务名称= PW
$状态=停止

它给了我正确的结果,如果我把值而不是variables。

请帮忙。 这是非常紧急的。

param($eventID,$ServiceName,$Status) $eventID | add-content "path\hello.txt" $ServiceName | add-content "path\hello.txt" $Status | add-content "path\hello.txt" sleep 5 $ErrorTime=Get-WinEvent -LogName 'System' -FilterXPath 'Event[System[EventID=$(eventID)] and EventData[Data[@Name="param1"]="$(ServiceName)" and Data[@Name="param2"]="$(Status)" ]]' -MaxEvents 1 | select -expand timecreated $ErrorTime | add-content "path\hello.txt" 

单引号内的内容是文字,variables不扩展。 对含有variables的东西使用双引号,需要扩展。 用双引号replacefilter外部的单引号。 用vars在内部使用双引号(反引号双引号)。 您可以在内部使用单引号来表示非variables的参数。

PS C:> help about_quoting_rules

 PS C:\> $var = "quick brown fox" PS C:\> write-host "$var" quick brown fox PS C:\> write-host '$var' $var PS C:\> write-host "`"$var`"" "quick brown fox"