从powershell获取输出时出现的问题

从powershell获取输出时出现的问题,powershell,Powershell,请注意,由于工作场所的机密性,基础和过滤器只是示例,而不是实际代码。代码当前将从AD all computer name中提取,然后将运行ForEach命令以获取NetAdapter信息。但是,我无法将其输出到CSV文件。任何建议都很好 我的建议是:1)不要连续向数组追加对象;2)避免使用导出Csv的-append参数;3)利用管道。例如: $ErrorActionPreference = 'SilentlyContinue' $ComputerName =Get-ADComputer -Fi

请注意,由于工作场所的机密性,基础和过滤器只是示例,而不是实际代码。代码当前将从AD all computer name中提取,然后将运行ForEach命令以获取NetAdapter信息。但是,我无法将其输出到CSV文件。任何建议都很好

我的建议是:1)不要连续向数组追加对象;2)避免使用
导出Csv
-append
参数;3)利用管道。例如:

$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

根据数据的大小,
ForEach对象
在速度上是一个极大的障碍。在本例中不是这样(在管道运行之前收集计算机名)。我的示例和您的示例在速度上应该没有什么不同:我更喜欢避免附加数组,而只是在到达每个对象时输出它(利用管道)。我没有附加数组;)而
ForEach对象
ForEach
循环慢,后者比
ForEach()数组方法慢。我的答案中从来没有附加数组。这是关于为作业使用正确的工具。在一个10000个对象的样本中(我会考虑一个适当的机器池),超过100次迭代,<代码> %>代码>是<>代码>前缀()/代码>的两倍慢,这是<>代码> Frace循环的三倍(这让我吃惊)。
$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