我正在使用以下脚本引用带有计算机名称列表的txt文件,以查找每台计算机所使用的操作系统和操作系统版本。我可以将其显示在PowerShell中,但是我为将其导出到CSV文件所做的所有尝试都失败了。我在这里使用了其他文章,推荐使用Write-output和Export-csv,但我得到的只是错误(取决于位置),或者得到的CSV文件显示了长度和字符数。我不介意进行工作,但感觉好像我不明白如何放置管道并将结果保存到CSV文件。
$Computers = Import-Csv -Path "c:\Scripts\computers.txt" -Header "Name"
foreach ($Computer in $Computers) {
try {
Get-ADComputer -Identity $Computer.Name -Properties Name, operatingSystem, operatingSystemVersion |
Select Name, operatingSystem, operatingSystemVersion
} catch {
$Computer.Name + " not in AD" |
Export-Csv -Path .\computers-results.csv -NoTypeInformation
}
}
答案 0 :(得分:0)
尝试一下:
$Computers = Import-CSV -Path "c:\Scripts\computers.txt" -Header "Name"
$Result = ForEach ($Computer In $Computers)
{
Try
{
Get-ADComputer -Identity $Computer.Name -Properties Name, operatingSystem, operatingSystemVersion | Select Name, operatingSystem, operatingSystemVersion
}
Catch
{
Write-Warning $Computer.Name + " not in AD"
}
}
$Result | Export-CSV .\computers-results.csv -NoTypeInformation
这是通过将ForEach
循环的结果与$Result
变量进行比较来完成的,这是因为Get-ADComputer
行的结果已返回到管道中。
循环完成后,$Result
是对象的集合,然后我们可以将其发送到Export-CSV
以转换为CSV文件。
请注意,我也将Catch
部分更改为使用Write-Warning
,因此您只会在控制台中看到无法访问的计算机,它们不会出现在输出文件中完全没有。