У меня есть скрипт, который сканирует все мои серверы в моих доменах и выводит в два отдельных файла CSV - один простой и один расширенный.
Я пишу одну строку за раз в мой CSV .. Это приводит ктысячи открытий и закрытий файлов. Я скрывался и понимаю, что сначала мне нужно собрать всю информацию и записать все одним махом в конце сценария.Но как мне это сделать с помощью export-csv (желательно с использованием функции)?
И есть ли способ использовать одну и ту же функцию для короткого и длинного списка?
Сценарий выполняет множество задач на каждом домене / сервере, но я сократил его до этого дляВаше удовольствие от просмотра:
$domains = "no","se","dk"
# Loop through specified forests
foreach ($domain in $domains) {
# List all servers
$servers = Get-QADComputer
# Looping through the servers
foreach ($server in $servers) {
# GENERATE LONGLIST #
# Ping server
if (Test-Connection -ComputerName $server.name -count 1 -Quiet )
{
$Reachable = "Yes"
# Fetch IP address
$ipaddress = [System.Net.Dns]::GetHostAddresses($Server.name)|select-object IPAddressToString -expandproperty IPAddressToString
# Formatting output and export all info to CSV
New-Object -TypeName PSObject -Property @{
SystemName = ($server.name).ToLower()
Reachable = $Reachable
Domain = $server.domain
IPAddress = $IPAddress
} | Select-Object SystemName,Domain,IPAddress| Export-Csv -Path "longexport.csv" -append
}
else # Can't reach server
{
$reachable = "No"
$IPAddress = "Unknown"
# Formatting output and export all info to CSV
New-Object -TypeName PSObject -Property @{
SystemName = ($server.name).ToLower()
Reachable = $Reachable
Domain = $server.domain
} | Select-Object SystemName,Domain,IPAddress| Export-Csv -Path "shortexport.csv" -append
}
}
}
(и позвольте мне сказать, что я знаю, что не могу сделать -append с export-csv, но я использую функцию, которая позволяет мне делать это ..)