programing

PowerShell 변수를 텍스트 파일로 출력

megabox 2023. 8. 12. 10:09
반응형

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

반응형