2012-06-22 2 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 

Примечание: имеет псевдоним, tee, который является таким же, как Unix»tee.

+0

, что дает мне ту же ошибку – Ron

+0

$ ОЕ = Get-ADObject -LDAPFilter "(ObjectCategory = OrganizationalUnit)" ' -SearchBase«OU = GA, OU = EAST, DC = corp, DC = chm, DC = com "| Выберите DistinguishedName ForEach ($ OU в $ OUs) { $ OU.distinguishedName Get-ADComputer -SearchBase $ OU.distinguishedName -SearchScope OneLevel ' -Filter * | Выберите имя } Tee-Object -file c: \ temp \ outfile.txt – Ron

+0

Просто ** pipe ** это команда 'Tee-Object'. См. Мое обновление. –

0

An empty pipe element is not allowed.

Несколько лет слишком поздно, но у вас есть бар дубликата в последней строке:

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

Это не исправить ошибку полностью, потому что вы не можете трубы непосредственно из цикла Еогеасп. Вы можете экспортировать его другим способом в CSV вместо текстового файла, такого как Tee-Object (вы можете преобразовать tee-объект в 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 
Смежные вопросы