programing

출력을 PowerShell의 화면과 파일에 표시

telecom 2023. 9. 7. 21:31
반응형

출력을 PowerShell의 화면과 파일에 표시

화면 출력뿐만 아니라 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

그 외에도 많은 형식이 있지만 항상 오류가 발생합니다.

파이프 요소는 비워 둘 수 없습니다.

cmdlet을 사용합니다.

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, 유닉스와 같은 것입니다.

작동 내용:

Get-WmiObject -Class Win32_Product | Select Name, Version | Sort Name | Tee-Object -file h:\InstalledApps.TXT

파이프 요소는 비워 둘 수 없습니다.

마지막 줄에 중복되는 막대가 있습니다.

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

각 루프에서 직접 파이프링할 수 없기 때문에 오류가 완전히 해결되지는 않습니다.Tee-Object처럼 텍스트 파일 대신 CSV 파일로 내보낼 수 있습니다(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

티 오브제는 좋지만 매우 제한적입니다.함수에 대한 더 많은 제어가 필요한 사람들을 위해 - eNLib의 write-log 함수를 사용합니다.

설치 모듈 eNLib

write-log를 사용하면 텍스트, 객체를 포크하고, 시작-스크립트 기능으로 로그 파일을 정의할 수 있으며, 매번 로그 파일 이름을 정의할 필요가 없어 고급 스크립팅에 매우 유용합니다.

언급URL : https://stackoverflow.com/questions/11161929/show-output-on-screen-and-in-file-in-powershell

반응형