【问题标题】:Issues with Powershell variables/expressionsPowershell 变量/表达式的问题
【发布时间】:2015-04-02 16:15:16
【问题描述】:

我正在尝试使用变量构建 Get-Winevent 命令,但我在“构建”命令中遇到了变量问题,而且我遇到了众所周知的问题。在最后一段代码中,如果我删除 $EventIDQueryAdd 和 $EntryTypeQueryAdd 命令运行没有问题。任何帮助将不胜感激!谢谢!

$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 ...

【问题讨论】:

    标签: powershell


    【解决方案1】:

    错误信息是什么? :-)

    在最后一行代码中,您似乎缺少 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    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2018-03-30
      • 2023-01-11
      • 2023-02-07
      • 2020-08-18
      相关资源
      最近更新 更多