Вопрос по powershell – Показать вывод на экране и в файле в PowerShell

17

Как я могу получить все это не только для вывода на экран, но и сохранить в текстовом файле в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

И многие другие форматы, но я всегда получаю ошибку:

An empty pipe element is not allowed.

Ваш Ответ

2   ответа
36

Использовать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

Note: У него есть псевдоним,tee, что совпадает с Unix & apos;tee.

это дает мне ту же ошибку Ron
Простоpipe это кTee-Object команда. Смотрите мое обновление.
Я получаю ту же ошибку} | Tee-Object -file c: \ temp \ outfile.txt Пустой элемент канала запрещен. В строке: 8 символов: 3 Ron
я получил его для работы с Tee, но мне пришлось (и я попытаюсь использовать правильные термины) обернуть его в {} и сделать его функцией. Затем я смог выполнить эту функцию. Спасибо Ron
$ OUs = Get-ADObject -LDAPFilter & quot; (objectCategory = organizUnit) & quot; `-SearchBase 'OU = GA, OU = EAST, DC = corp, DC = chm, DC = com & quot; | Выберите значимое имя ForEach ($ OU в $ OU) {$ OU.distinguishedName Get-ADComputer -SearchBase $ OU.distinguishedName -SearchScope OneLevel `-Filter * | Выберите Имя} Tee-Object -file c: \ temp \ outfile.txt Ron
0

An empty pipe element is not allowed.

У вас есть дубликат в последней строке:

} | | 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

Похожие вопросы