Привет, я сделал сценарий PowerShell, в котором я беру три аргумента (в блоке параметров) и передаю их в качестве параметров -FilterXPath. Но я не могу получить результат.
$ eventID = 7036
$ ServiceName = PW
$ Статус = остановлено
Это даст мне правильный результат, если я введу значения вместо переменных.
Пожалуйста помоги. Это очень срочно.
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"
Содержимое в одинарных кавычках является буквальным, переменные не раскрываются. Используйте двойные кавычки для вещей, которые содержат вары и нуждаются в расширении. Замените одинарные кавычки за пределами вашего фильтра двойными кавычками. Использованы экранированные двойные кавычки (двойные кавычки с обратной кавычкой) внутри для частей с vars. Вы можете использовать одинарные кавычки внутри для параметров, которые не являются переменными.
PS C:> помощь 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"