[PowerShell] #5 입력과 출력

g.pm·2025년 6월 23일
0

PowerShell

목록 보기
5/5
post-thumbnail

1~4장은 파워셸의 기본적인 개념들을 배웠습니다. 지금부터는 앞선 명령들을 바탕으로 어떤 구조로 실제 입력과 출력이 수행되는지 학습해봅시다.

1. 출력 명령

파워셸 명령을 실행하고 결과를 표시하는 출력 장치의 가장 일반적인 예는 화면입니다. 더불어 실행 결과를 화면이 아닌다른 출력 장치에 보낼 수 있는데 이것을 출력 재지정 명령이라고 하며, OUT-Host, Out-File, Out-Printer가 대표적입니다. 해당 명령어들은 파이프라인에서 가장 끝단에 위치합니다.

대표적인 콘솔 출력 Out-Host / Write-Host / Write-Output

Out-Host

Out-Host는 PowerShell에서 결과를 콘솔(터미널)에 표시하도록 하는 명령어입니다. 즉, 파이프라인을 통해 전달된 데이터를 윈도우 PowerShell 호스트로 보내 화면에 출력하는 역할을 합니다


Get-Process | Out-Host

Out-Host는 결과를 콘솔에 표시하기 때문에, 파이프라인을 통해 다른 명령어에 결과를 전달해야 할 경우에는 적합하지 않을 수 있습니다. 예를 들어, Out-Host를 사용하여 결과를 파일에 저장하려고 시도하면 작동하지 않습니다.


Write-Host

Write-Host 명령어는 PowerShell에서 호스트에 텍스트를 출력하는 cmdlet입니다. 주로 화면에 메시지를 표시하거나, 색상 등을 지정하여 출력할 때 사용됩니다. Write-Output과 달리 파이프라인으로 전달되지 않고, 호스트 종속적인 출력을 생성합니다. 여기서 말하는 호스트는 파워셸 실행환경을 말합니다. ex) 파워셸 콘솔/ISE.. etc

다음과 같이 사용자가 지정한 명령 구문을 아래와 같이 콘솔에 출력합니다


Write-Output

Write-Output은 PowerShell에서 객체를 성공 스트림(주 파이프라인)으로 출력하는 cmdlet입니다. 즉, 스크립트나 함수의 결과를 화면에 표시하거나 다른 cmdlet으로 전달하는 데 사용됩니다. 기본적으로 출력되는 개체는 열거됩니다. Write-Output은 출력을 성공 스트림으로 보내므로, 파이프라인을 통해 다른 cmdlet으로 결과를 전달할 수 있습니다. 특히나 echoWrite-Output의 별칭으로, 자주 실무에서 사용됩니다.

Write-Output "Hello, World!"  # 콘솔에 "Hello, World!" 출력
Write-Output $processes  # $processes 변수의 내용을 성공 스트림으로 출력 
echo "Hello, World!"


비슷한 출력 명령어들을 요약하자면 Out-Host는 결과를 콘솔에 직접 표시하는 반면, Out-File은 결과를 파일에 저장합니다. 또한 Write-Host는 화면에 정보를 표시하지만, 파이프라인에 연결하여 다른 명령어로 결과를 전달하지 못하는 차이가 있습니다. 특히나 Write-Output의 경우 Write-Host 대비 파이프라인 / 개행과 같은 기본적인 기능을 지원하므로 더 유연하게 사용이 가능합니다.

출력 개체의 형식 변환

파워셸 파이프라인 개체를 다른 형식의 데이터로 나타내는 기능을 제공합니다 예를 들어 개체의 형식을 HTML/CSV/XML 과 같은 파일 형식으로 변경 할 수 있습니다. 첫 소개할 명령어는 CovertTo- 명령어입니다.

해당 명령어는 다음과 같이 사용이 가능합니다.

Get-Process | ConvertTo-CSV | Out-File Process.cs

업로드중..

이보다 편한 명령은 바로 Export- 명령어입니다. 위에서 사용한 명령어에서 Export- 를 사용하면 다음과 같이 대체가 가능합니다.

Get-Process | Export-CSV Process.cs

쉽게 설명하자면 해당 명령어는 기존 ConverTo 명령어와 Out-File 의 기능이 결합된 명령어라고 할 수 있습니다. 다만 해당 명령어의 결과는 다시 파이프라인으로 보낼 수는 없습니다.

2. 입력 명령

입력 명령은 앞선 Export-* 명령어와 대비되는 Import 명령어가 있습니다. Import 명령은 데이터 형식과 구조를 가져오는 명령어입니다. 데이터를 형식과 구조를 가져오는 명령어와 더불어 데이터를 단순히 읽는 명령어이는 Get-Content는 실무에서 가장 많이 사용하는 명령어입니다. 다만 앞서 Import 명령어와 다른 점은 해당 데이터와 구조와 형식 자체를 이해하고 있는 것이 아니기 때문에 데이터의 종류에 따라 구별된 사용이 필요합니다.

C/C++ 언어의 Scanf()와 같이 사용자 직접 입력을 위한 명령어로는 Read-host 명령어가 있습니다. 다만 입력 후 처리를 위해 해당 명령어로 입력받은 데이터를 변수로 지정해 처리하겠끔 하는 것이 실무에서는 효과적입니다.

ForEach-Object를 사용해 컬렉션 다루기

profile
다재다능

0개의 댓글