Прежде всего, спасибо за чтение. Я новичок в Powershell, поэтому, пожалуйста, прости мое невежество. Кроме того, я впервые пишу здесь.
До того, как у меня было это, и оно работало, однако, это было безумно медленно. Вот начальный скрипт:
$RemoteComputers = (Get-ADComputer -Filter {OperatingSystem -Like 'Windows*'} -Property * -SearchBase "OU=Computers,OU=Domain".Name
ForEach ($Computer in $RemoteComputers)
{
$result = Invoke-Command -ErrorAction SilentlyContinue -ComputerName $Computer -ScriptBlock {Test-NetConnection -Port 135 server.domain.local}
[pscustomobject]@{
Target = $Computer
RemoteAddress = $result.RemoteAddress
SourceAddress = (Resolve-Dnsname $Computer -ErrorAction SilentlyContinue).IPAddress
Port = $result.RemotePort
Status = $result.tcpTestSucceeded
}
}
затем запустил его, выполнив это
.\ports.ps1 | Tee-Object -Variable result | Export-Csv ports-all.csv -NoTypeInformation
Итак, ниже я удалил -Property * и очистил его. Однако нет содержимого в файле CSV. Может кто-нибудь сказать мне, почему, когда я запускаю это, в csv-файле нет содержимого?
$RemoteComputers = (Get-ADComputer -Filter {OperatingSystem -Like 'Windows*'} -SearchBase "OU=Computers,OU=Domain").Name
$results = try {
Invoke-Command -ErrorAction Stop -ComputerName $RemoteComputers -ScriptBlock {
$Test = Test-NetConnection -Port 135 "server.domain.local"
[pscustomobject]@{
Target = $Env:COMPUTERNAME
RemoteAddress = $Test.RemoteAddress
SourceAddress = (Resolve-Dnsname $Env:COMPUTERNAME -ErrorAction SilentlyContinue).IPAddress
Port = $Test.RemotePort
Status = $Test.tcpTestSucceeded
}
}
}
catch {
Write-Output ([pscustomobject]@{
Target = $_.TargetObject
RemoteAddress = $null
SourceAddress = $null
Port = $null
Status = "Failed to connect"
})
}
$results | select target, remoteaddress, sourceaddress, port, status | export-csv file.csv
Так что этот последний скрипт ничего не выводит в CSV. Почему?