2012-06-22 6 views
8

これをすべて画面に出力するだけでなく、CSV形式のテキストファイルに保存するにはどうすればよいですか?出力をPowerShellの画面とファイルに表示

$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 

そして、多くの他のフォーマットを試してみましたが、私は常にエラーを取得:

An empty pipe element is not allowed.

答えて

24

Tee-Objectコマンドレットを使用します。

The Tee-Object cmdlet enables you to display data in the Windows PowerShell window and to save that same data to a text file, all with a single command.

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 

注:それはUnixの「teeと同じであるエイリアス、teeを、持っています。

+0

を – Ron

+0

$のOU =のGet-ADObject -LDAPFilter "(objectCategoryの=のorganizationalUnit)" ' -SearchBase「OU = GA、OU = EAST、DC = corp、DC = chm、DC = com "|識別名を選択 ForEach($ OU $ OUs) { $ OU.distinguishedName Get-ADComputer -SearchBase $ OU.distinguishedName -SearchScope OneLevel ' -Filter * |名前を選択 } Teeオブジェクト - ファイルc:\ temp \ outfile.txt – Ron

+0

** Tee-Objectコマンドに**パイプ**するだけです。私の更新を参照してください。 –

0

An empty pipe element is not allowed.

手遅れ数年いますが、最後の行に重複したバーがあります。

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

あなたは、foreachループから直接パイプすることができないため、完全にエラーを修正しません。この方法で、Tee-Objectのようなテキストファイル(CSVファイルに変換することができます)の代わりに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