首页 > 解决方案 > 从 powershell 获取输出的问题

问题描述

$ErrorActionPreference = 'SilentlyContinue'

$ComputerName =Get-ADComputer -Filter {(Name -like "*")} -SearchBase "OU=AsiaPacific,OU=Sales,OU=UserAccounts,DC=FABRIKAM,DC=COM" | Select-Object -ExpandProperty Name

$results = @{}
ForEach ($computer in $ComputerName) {
    $Results += Get-NetAdapter -CimSession $ComputerName | Select-Object PsComputerName, InterfaceAlias, Status, MacAddress
}

$results | Export-csv -path C\users\bret.hooker\desktop\macaddress.csv -Append

请注意,由于工作场所的机密性,base 和 filter 只是示例,而不是实际代码。当前代码将从 AD 中提取所有计算机名称,然后运行 ​​ForEach 命令以获取 NetAdapter 信息。但是,我无法将其输出到 CSV 文件。任何建议都会很棒。

标签: powershell

解决方案


我的建议是 1)不要不断地将对象附加到数组中,2)避免使用 的-Append参数Export-Csv,以及 3)利用管道。例子:

$computerNames = Get-ADComputer -Filter * -SearchBase "OU=AsiaPacific,OU=Sales,OU=UserAccounts,DC=FABRIKAM,DC=COM" | Select-Object -ExpandProperty Name
$computerNames | ForEach-Object {
  Get-NetAdapter -CimSession $_ | Select-Object PSComputerName,InterfaceAlias,Status,MACAddress
} | Export-Csv "C\users\bret.hooker\desktop\macaddress.csv" -NoTypeInformation

推荐阅读