PowerShell 변수를 텍스트 파일로 출력
저는 PowerShell이 처음이고 Active Directory에서 특정 컴퓨터를 검색하는 스크립트를 가지고 있습니다.여러 변수를 얻은 다음 WMI 및 레지스트리 설정과 같은 항목을 확인하는 기능을 실행합니다.
콘솔에서 내 스크립트는 잘 실행되고 간단한 Write-Host 명령은 내가 원하는 대로 화면에 데이터를 인쇄합니다.파이프라인을 사용할 때 Export-Csv에 대해 알고 있습니다.파이프라인에서 인쇄할 생각은 없습니다
변수를 텍스트 파일에 쓰고 루프를 계속한 다음 AD에서 다음 컴퓨터를 확인하고 다음 행에 동일한 변수를 출력합니다.다음은 내 쓰기 호스트:
Write-Host ($computer)","($Speed)","($Regcheck)","($OU)
출력 파일:
$computer,$Speed,$Regcheck | out-file -filepath C:\temp\scripts\pshell\dump.txt -append -width 200
그것은 제게 데이터를 제공하지만, 각각의 변수는 그들만의 선에 있습니다. 왜죠?저는 모든 변수를 쉼표로 구분하여 한 줄로 묶고 싶습니다.VB 쓰기 라인과 유사한 간단한 방법이 있습니까?내 PowerShell 버전은 2.0인 것 같습니다.
사용:
"$computer, $Speed, $Regcheck" | out-file -filepath C:\temp\scripts\pshell\dump.txt -append -width 200
저는 보통 이러한 루프에서 사용자 지정 개체를 구성한 다음 이러한 개체를 쉽게 조작, 정렬, CSV로 내보낼 수 있는 어레이에 추가합니다.
# Construct an out-array to use for data export
$OutArray = @()
# The computer loop you already have
foreach ($server in $serverlist)
{
# Construct an object
$myobj = "" | Select "computer", "Speed", "Regcheck"
# Fill the object
$myobj.computer = $computer
$myobj.speed = $speed
$myobj.regcheck = $regcheck
# Add the object to the out-array
$outarray += $myobj
# Wipe the object just to be sure
$myobj = $null
}
# After the loop, export the array to CSV
$outarray | export-csv "somefile.csv"
PowerShell의 '-join' 연산자를 사용하여 값 배열을 연결할 수 있습니다.다음은 예입니다.
$FilePath = '{0}\temp\scripts\pshell\dump.txt' -f $env:SystemDrive;
$Computer = 'pc1';
$Speed = 9001;
$RegCheck = $true;
$Computer,$Speed,$RegCheck -join ',' | Out-File -FilePath $FilePath -Append -Width 200;
산출량
pc1,9001,True
$computer,$Speed,$Regcheck
배열을 생성하고 실행합니다.out-file
변수당 1개 = 별도의 선을 얻습니다.먼저 변수를 사용하여 단일 문자열을 구성하면 단일 줄이 표시됩니다.다음과 같이:
"$computer,$Speed,$Regcheck" | out-file -filepath C:\temp\scripts\pshell\dump.txt -append -width 200
간단한 해결책은 Out-File로 파이핑하기 전에 배열을 만들지 않는 것입니다.PowerShell의 규칙 #1은 쉼표가 특수 구분 기호이며 기본 동작은 배열을 생성하는 것입니다.연결은 다음과 같이 수행됩니다.
$computer + "," + $Speed + "," + $Regcheck | out-file -filepath C:\temp\scripts\pshell\dump.txt -append -width 200
이렇게 하면 세 항목의 배열이 만들어집니다.
$computer,$Speed,$Regcheck
FYKJ
100
YES
쉼표로 구분된 세 항목의 연결 대
$computer + "," + $Speed + "," + $Regcheck
FYKJ,100,YES
저는 구글 검색에서 여기에 이끌렸습니다.선의를 보여주기 위해 이 코드의 일부와 다른 코드에서 가져온 내용을 포함했습니다.
# This script is useful if you have attributes or properties that span across several commandlets
# and you wish to export a certain data set but all of the properties you wish to export are not
# included in only one commandlet so you must use more than one to export the data set you want
#
# Created: Joshua Biddle 08/24/2017
# Edited: Joshua Biddle 08/24/2017
#
$A = Get-ADGroupMember "YourGroupName"
# Construct an out-array to use for data export
$Results = @()
foreach ($B in $A)
{
# Construct an object
$myobj = Get-ADuser $B.samAccountName -Properties ScriptPath,Office
# Fill the object
$Properties = @{
samAccountName = $myobj.samAccountName
Name = $myobj.Name
Office = $myobj.Office
ScriptPath = $myobj.ScriptPath
}
# Add the object to the out-array
$Results += New-Object psobject -Property $Properties
# Wipe the object just to be sure
$myobj = $null
}
# After the loop, export the array to CSV
$Results | Select "samAccountName", "Name", "Office", "ScriptPath" | Export-CSV "C:\Temp\YourData.csv"
건배.
언급URL : https://stackoverflow.com/questions/20858133/output-powershell-variables-to-a-text-file
'programing' 카테고리의 다른 글
Minikube용 VM에 SSH하려면 어떻게 해야 합니까? (0) | 2023.08.12 |
---|---|
mariaDBEOF를 알고 싶습니다. (0) | 2023.08.12 |
express에서 app.config 사용 (0) | 2023.08.12 |
Jenkins 파이프라인 스크립트에서 SQL 스크립트를 실행하려면 작업 전략이 필요합니다. (0) | 2023.08.12 |
Git는 왜 암호화 해시 함수를 사용합니까? (0) | 2023.08.12 |