30

我怎样才能让所有这些不仅在屏幕上输出,而且以CSV格式保存到文本文件中?

$OUs = Get-ADObject -LDAPFilter "(objectCategory=organizationalUnit)" `
     -SearchBase "OU=GA,OU=EAST,DC=corp,DC=chm,DC=com" | Select distinguishedName
 ForEach ($OU In $OUs)
 {
     $OU.distinguishedName
     Get-ADComputer -SearchBase $OU.distinguishedName -SearchScope OneLevel `
         -Filter * | Select Name
 }

我试过了

$OUs = Get-ADObject -LDAPFilter "(objectCategory=organizationalUnit)" `
     -SearchBase "OU=GA,OU=EAST,DC=corp,DC=chartercom,DC=com" | Select distinguishedName
 ForEach ($OU In $OUs)
 {
     $OU.distinguishedName
     Get-ADComputer -SearchBase $OU.distinguishedName -SearchScope OneLevel `
         -Filter * | Select Name
 } | | export-CSV c:\temp\outfile.csv –noType

和许多其他格式,但我总是得到错误:

不允许使用空的管道元素。

4

4 回答 4

66

使用Tee-Objectcmdlet。

Tee-Object cmdlet 使您能够在 Windows PowerShell 窗口中显示数据并将相同的数据保存到文本文件中,所有这些都使用一个命令。

dir | Tee-Object -file dir.txt

你应该像这样使用它,

 ForEach ($OU In $OUs)
 {
     $OU.distinguishedName
     Get-ADComputer -SearchBase $OU.distinguishedName -SearchScope OneLevel `
         -Filter * | Select Name
 } | Tee-Object -file c:\temp\outfile.txt

注意:它有一个别名,tee,与 Unix' 相同tee

于 2012-06-22T18:20:56.067 回答
1

不允许使用空的管道元素。

最后一行有一个重复的栏:

} | | export-CSV c:\temp\outfile.csv –noType

这并不能完全修复错误,因为您不能直接从 foreach 循环进行管道传输。您可以将其以另一种方式导出到 CSV 文件,而不是像 Tee-Object 那样的文本文件(您可以将 Tee-Object 转换为 CSV)。这样,它将结果输出到 CSV 文件并将结果打印到屏幕上:

$OUs = Get-ADObject -LDAPFilter "(objectCategory=organizationalUnit)" `
         -SearchBase "OU=GA,OU=EAST,DC=corp,DC=chartercom,DC=com" | Select distinguishedName

$results = @()
ForEach ($OU In $OUs)
{
    $OU.distinguishedName
    Get-ADComputer -SearchBase $OU.distinguishedName -SearchScope OneLevel `
                   -Filter * | Select Name
} $results | Export-Csv c:\temp\outfile.csv -NoTypeInformation
write-host $results

这也可以使用更简单的脚本来完成:

Get-ADComputer -SearchBase "OU=GA,OU=EAST,DC=corp,DC=chartercom,DC=com" -SearchScope OneLevel -Filter * | Select Name | Export-Csv c:\temp\outfile.csv -NoTypeInformation
Import-Csv c:\temp\outfile.csv
于 2016-10-25T22:41:07.483 回答
0

这有效:

Get-WmiObject -Class Win32_Product | Select Name, Version | Sort Name | Tee-Object -file h:\InstalledApps.TXT
于 2020-09-24T14:21:27.333 回答
0

tee-object 很好,但非常有限。对于那些需要更多控制功能的人 - 使用来自 eNLib 的 write-log 功能

安装模块 eNLib

write-log 允许 fork 文本、对象、使用 start-logging 功能定义日志文件,不需要每次都定义日志文件名称 - 对于高级脚本非常有用。

于 2021-04-20T13:52:16.640 回答