2015-04-02 63 views
0

我想使用變量來構建一個Get-Winevent命令,但我遇到了「內置」命令中的變量問題,並且我碰到了衆所周知的磚牆。在最後一段代碼中,如果我刪除$ EventIDQueryAdd和$ EntryTypeQueryAdd,那麼該命令將毫無問題地運行。任何援助將不勝感激!謝謝!Powershell變量/表達式的問題

$ArgLastMinutes = 60 
$ArgLogName = "Security" 
$ArgEntryType = 0 
$ArgEventID = 4625 
if ($ArgEventID) { $EventIDQueryAdd="id=$ArgEventID;" } 
if ($ArgEntryType) { $EntryTypeQueryAdd="level=$ArgEntryType;" } 

write-host "argeventid "$ArgEventID # returns 4625 
write-host "argentrytype "$ArgEntryType # returns 1 
write-host "eventidqueryadd "$EventIDQueryAdd # returns id=4625; as it should 
write-host "entrytypequeryadd "$EntryTypeQueryAdd # returns level=1; as it should 
$LogEntries=Get-WinEvent -FilterHashtable @{logname="$ArgLogName"; $EventIDQueryAdd $EntryTypeQueryAdd StartTime=(Get-Date).AddMinutes(-$ArgLastMinutes) } 
... Loop through LogEntries ... 

回答

0

錯誤信息是什麼? :-)

在代碼的最後一行,它看起來像你錯過無論是EventIDQueryAdd$EntryTypeQueryAdd鍵值名或兩個(和一些分號)之間的=跡象。

$LogEntries=Get-WinEvent -FilterHashtable @{logname="$ArgLogName"; $EventIDQueryAdd $EntryTypeQueryAdd StartTime=(Get-Date).AddMinutes(-$ArgLastMinutes) } 

回想一下,散列是鍵值對的集合。只是價值觀沒有意義。

一個選項,使用$EventIDQueryAdd(具有值 'EventIDQueryAdd')作爲具有$EntryTypeQueryAdd的值的密鑰(與值 'EntryTypeQueryAdd'):

PS C:\>@{logname="$ArgLogName"; $EventIDQueryAdd=$EntryTypeQueryAdd; StartTime=(Get-Date).AddMinutes(-$ArgLastMinutes)} 

@{logname="$ArgLogName"; $EventIDQueryAdd=$EntryTypeQueryAdd; StartTime=(Get-Date).AddMinutes(-$ArgLastMinutes)} 

Name       Value                       
----       -----                       
logname      LogName                      
StartTime      2015-04-02 12:56:25 AM                  
EventIDQueryAdd    EntryTypeQueryAdd 

使用不同的鍵名的另一種選擇:

PS C:\> @{logname="$ArgLogName"; SomeKey1=$EventIDQueryAdd; SomeKey2=$EntryTypeQueryAdd; StartTime=(Get-Date).AddMinutes(-$ArgLastMinutes)} 

Name       Value                       
----       -----                       
SomeKey1      EventIDQueryAdd                    
logname      LogName                      
StartTime      2015-04-02 12:58:05 AM                  
SomeKey2      EntryTypeQueryAdd