ivan.vas
15-09-2021, 15:57
Всем привет!
Помогите понять логику Foreach... Не могу понять почему скрипт который выглядит вот так:
$Time = (Get-Date) - (New-TimeSpan -Hours 24)
$events = @()
$events += Get-WinEvent -FilterHashtable @{Logname = "Security" ; ID = 4800,4801; StartTime = $Time}
$events += Get-WinEvent -FilterHashtable @{Logname = "System" ; ID = 7001,7002; StartTime = $Time}
$Date = Get-Date -format yyyy-MM-dd
$ArrayList = New-Object System.Collections.ArrayList
Foreach ($Event in $Events)
{
[xml]$Xml = $Event.ToXml()
$Row = "" | Select Username,TimeCreated,Operation
$Row.Username = $EventProperties[1].value
$Row.TimeCreated = $Event.TimeCreated.ToString()
$Row.Operation = $Event.ID
[void]$ArrayList.Add($Row)
}
$ArrayList | Sort TimeCreated
работает исправно, но когда я хочу сделать выборку из файла где содержатся имена компьютеров, то получается не пойми что...
$Time = (Get-Date) - (New-TimeSpan -Hours 24)
$Servers = Get-Content "C:\temp\Comp.txt"
Foreach ($Server in $Servers)
{
if(Test-Connection $Server -Count 2 -Quiet ) {
$events = @()
$events += Get-WinEvent -ComputerName $Server -FilterHashtable @{Logname = "Security" ; ID = 4800,4801; StartTime = $Time}
$events += Get-WinEvent -ComputerName $Server -FilterHashtable @{Logname = "System" ; ID = 7001,7002; StartTime = $Time}
$Date = Get-Date -format yyyy-MM-dd
$ArrayList = New-Object System.Collections.ArrayList
Foreach ($Event in $Events)
{
[xml]$Xml = $Event.ToXml()
$Row = "" | Select Username,TimeCreated,Operation
$Row.Username = $EventProperties[1].value
$Row.TimeCreated = $Event.TimeCreated.ToString()
$Row.Operation = $Event.ID
[void]$ArrayList.Add($Row)
}
}
else {}
}
$ArrayList | Sort TimeCreated
Хочу к варианту который исправно работает (1 листинг) добавить возможность выборки имен компьютеров из файла txt.
Помогите понять логику Foreach... Не могу понять почему скрипт который выглядит вот так:
$Time = (Get-Date) - (New-TimeSpan -Hours 24)
$events = @()
$events += Get-WinEvent -FilterHashtable @{Logname = "Security" ; ID = 4800,4801; StartTime = $Time}
$events += Get-WinEvent -FilterHashtable @{Logname = "System" ; ID = 7001,7002; StartTime = $Time}
$Date = Get-Date -format yyyy-MM-dd
$ArrayList = New-Object System.Collections.ArrayList
Foreach ($Event in $Events)
{
[xml]$Xml = $Event.ToXml()
$Row = "" | Select Username,TimeCreated,Operation
$Row.Username = $EventProperties[1].value
$Row.TimeCreated = $Event.TimeCreated.ToString()
$Row.Operation = $Event.ID
[void]$ArrayList.Add($Row)
}
$ArrayList | Sort TimeCreated
работает исправно, но когда я хочу сделать выборку из файла где содержатся имена компьютеров, то получается не пойми что...
$Time = (Get-Date) - (New-TimeSpan -Hours 24)
$Servers = Get-Content "C:\temp\Comp.txt"
Foreach ($Server in $Servers)
{
if(Test-Connection $Server -Count 2 -Quiet ) {
$events = @()
$events += Get-WinEvent -ComputerName $Server -FilterHashtable @{Logname = "Security" ; ID = 4800,4801; StartTime = $Time}
$events += Get-WinEvent -ComputerName $Server -FilterHashtable @{Logname = "System" ; ID = 7001,7002; StartTime = $Time}
$Date = Get-Date -format yyyy-MM-dd
$ArrayList = New-Object System.Collections.ArrayList
Foreach ($Event in $Events)
{
[xml]$Xml = $Event.ToXml()
$Row = "" | Select Username,TimeCreated,Operation
$Row.Username = $EventProperties[1].value
$Row.TimeCreated = $Event.TimeCreated.ToString()
$Row.Operation = $Event.ID
[void]$ArrayList.Add($Row)
}
}
else {}
}
$ArrayList | Sort TimeCreated
Хочу к варианту который исправно работает (1 листинг) добавить возможность выборки имен компьютеров из файла txt.