PowerShell 中的 Export-Csv 协助
Assistance w/ Export-Csv in PowerShell
我正在使用下面的脚本来引用一个包含计算机名称列表的 txt 文件,以找出每台计算机上的 OS 和 OS 版本。我可以让它在 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
}
}
试试这个:
$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
因此您只会在您的控制台中看到无法访问的机器,它们不会出现在您的完全没有输出文件。
我正在使用下面的脚本来引用一个包含计算机名称列表的 txt 文件,以找出每台计算机上的 OS 和 OS 版本。我可以让它在 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
}
}
试试这个:
$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
因此您只会在您的控制台中看到无法访问的机器,它们不会出现在您的完全没有输出文件。