Назад | Перейти на главную страницу

Передача аргументов в качестве параметра в журналы -filterXPath get-winevent

Привет, я сделал сценарий 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"