我有一个脚本可以扫描我域中的所有服务器并输出到两个单独的 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
}
}
}
(让我说我知道我不能用 export-csv 做 -append,但我正在使用一个让我这样做的函数..)