سؤال

أنا بناء وظيفة بوويرشيل حتى أتمكن من الاستعلام سجلات الأحداث أجهزة كمبيوتر متعددة.إيف نسخ التعليمات البرمجية أدناه أنني بحاجة إلى مساعدة مع.إذا لم أرسل إيفنتيد, أريد أن يجد البرنامج النصي كل معرف الحدث, كيف يمكنني تحقيق ذلك?

#this would be the parameter part of the script
[String]$ComputerName = $env:COMPUTERNAME#Current computer 
[String[]]$EventLogNames=@("Application","System")#Main eventlogs 
[int[]]$EventIds = 1 #Event Ids 
[System.DateTime[]]$EventStartDate = (((Get-Date).addDays(-2)).date)#date 10 days ago 
[System.DateTime[]]$EventEndTime = (Get-Date)#date 10 days ago 

#This fits in the process section
$EventCritea = @{logname = $EventLogNames; StartTime=$EventStartDate; EndTime=$EventEndTime; ID=$EventIds}
Get-WinEvent -ComputerName $ComputerName -FilterHashTable $EventCritea  -ErrorAction SilentlyContinue
هل كانت مفيدة؟

المحلول

أولا ، الآخر الخاص بك السؤال يحدد أنواع $EventStartDate و $EventEndTime.

لهذا السؤال:بناء هاشتابل تدريجيا:

$filter = @{logname = $EventLogNames; StartTime=$EventStartDate; EndTime=$EventEndTime}

if ($EventIds -ne $null -and $EventIds.Length -gt 0) {
  $filter.ID=$EventIds
}

Get-WinEvent -ComputerName $ComputerName -FilterHashTable $filter #...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top