PowerShell에서 명령을 여러 줄로 나누는 방법

  1. Windows PowerShell 다중 행 명령
  2. 특정 연산자를 사용하여 긴 코드 줄 나누기
  3. 결론
PowerShell에서 명령을 여러 줄로 나누는 방법

코드는 그 기능의 목적을 사용자에게 쉽게 전달합니다. 변수 이름과 메소드 이름은 코드 가독성을 위해 적절한 명명 규칙을 가져야 합니다.

코드 가독성에 기여하는 다른 속성으로는 일관된 들여쓰기 및 포맷 스타일이 있습니다. Windows PowerShell 다중 행 명령은 긴 명령어를 여러 문으로 나누어 가독성을 높이는 데 도움을 줍니다.

Windows PowerShell에서 다중 행 명령은 백틱 문자를 사용하여 긴 명령어를 여러 문으로 나누어 쉽게 작성할 수 있습니다.

백틱 문자는 일종의 이스케이프 문자로 사용됩니다. 이 문자는 줄 바꿈 문자를 이스케이프하여 줄 계속을 결과로 나타냅니다.

이 기사는 Windows PowerShell 다중 행 명령의 중요성을 설명하고 긴 명령을 여러 줄로 나누는 방법을 설명할 것입니다.

Windows PowerShell 다중 행 명령

긴 명령어를 여러 줄로 나누려면 백틱 문자를 사용하여 여러 줄로 나눕니다.

예를 들어, 우리는 로컬 컴퓨터의 무료 디스크 공간 정보를 가져오고자 합니다. 불행히도, 이 특정 정보를 얻기 위한 스크립트는 확장된 명령어여서 읽고 관리하기가 어렵습니다.

예제 코드:

Get-WmiObject -Class win32_logicaldisk | Format-Table DeviceId, MediaType, @{n = "Size"; e = { [math]::Round($_.Size / 1GB, 2) } }, @{n = "FreeSpace"; e = { [math]::Round($_.FreeSpace / 1GB, 2) } }

이 문서에서는 문법이 나누어진 것처럼 보일 수 있지만, 명령줄 인터페이스에 복사할 경우 위의 예제는 매우 긴 원라인 스크립트입니다.

우리는 주어진 명령어에서 줄 바꿈을 위한 Windows PowerShell 백틱 문자를 사용하여 긴 명령어를 쉽게 여러 줄로 나눌 수 있습니다.

예제 코드:

Get-WmiObject -Class win32_logicaldisk `
| Format-Table DeviceId, `MediaType, @{n = "Size"; e = { [Math]::Round($_.Size / 1GB, 2) } }, `
@{n = "FreeSpace"; e = { [Math]::Round($_.FreeSpace / 1GB, 2) } }

우리의 코드에서는 PowerShell에서 긴 명령어를 여러 줄로 나누어 가독성을 높이기 위해 백틱 문자를 줄 계속 문자로 사용합니다. 우리는 Get-WmiObject -Class win32_logicaldisk에서 시작하여 시스템의 논리 디스크에 대한 정보를 가져옵니다.

이 줄의 끝에 있는 백틱은 다음 줄로 명령이 계속됨을 나타냅니다. 그런 다음 우리는 출력을 Format-Table로 파이프(|)하여 출력을 테이블 형식으로 포맷합니다.

여기에서는 특히 DeviceIdMediaType을 표시하도록 선택합니다. SizeFreeSpace 속성에 대해서는 계산된 필드를 사용합니다(구문은 @{n = "Name"; e = { Expression }}로 표시됨).

이 계산된 필드 내에서 우리는 다시 줄 계속을 위해 백틱을 사용합니다. 표현식은 각각 바이트를 기가바이트로 변환하고 소수점 두 자리로 반올림하는 [Math]::Round($*.Size / 1GB, 2)[Math]::Round($*.FreeSpace / 1GB, 2)를 사용합니다.

이 복잡한 명령어를 백틱으로 나누어 스크립트를 더 관리하기 쉽고 의도를 명확하게 하여 유지보수와 가독성에 도움을 줍니다.

출력:

파워셸 다중 행 명령 - 출력 1

코드 구조는 Windows PowerShell에서 다중 행 명령을 사용하여 쉽게 읽히고 유지 관리하기 용이합니다. 그러나 백틱 문자는 읽기 어렵고 버그를 유발하기 때문에 일반적으로 권장되지 않습니다.

따라서 긴 코드 줄을 나누는 대체 방법이 있습니다.

특정 연산자를 사용하여 긴 코드 줄 나누기

PowerShell은 줄 계속에 대해 직관적입니다. 특정 연산자와 구문 구조는 본질적으로 인터프레터에게 명령이 여러 줄에 걸쳐 있음을 신호입니다.

이것은 가독성이 유지 관리의 용이성과 이해에 상당한 영향을 미칠 수 있는 복잡한 스크립트에서 특히 유용합니다.

파이프라인(|)을 사용하여 긴 코드 줄 나누기

보통 명령어가 해당 지점에서 문법적으로 완료될 수 없을 때 자동 줄 계속을 얻습니다.

한 가지 예는 새로운 파이프라인 요소(|)로 시작하는 것입니다. 파이프라인 연산자 뒤에 다른 파이프라인 요소가 없기 때문에 명령어는 문제 없이 작동합니다.

그렇다면 인터프레터는 다음 명령줄에서 다음 파이프라인 요소를 찾습니다.

예제 코드:

Get-Process |
    Where-Object { $_.ProcessName -like "powershell" } |
    Select-Object Id, ProcessName, CPU

우리의 스크립트에서는 Get-Process로 시작하여 현재 실행 중인 모든 프로세스를 검색합니다. 그런 다음 Get-Process의 출력을 Where-Object로 파이프하여 이름에 powershell이 포함된 프로세스를 필터링합니다.

이는 스크립트 블록 {} 내에서 -like 연산자를 사용하여 프로세스 이름과 일치하도록 달성됩니다.

이후 필터링된 결과를 Select-Object로 파이프합니다. 여기서 우리는 필터링된 프로세스의 Id, ProcessName, CPU 사용만 유지하도록 지정합니다.

파이프라인을 사용하여 우리는 명령어를 관리 가능한 조각으로 효과적으로 나누어 각 부분을 별도의 줄에 둡니다. 이는 스크립트를 더 읽기 쉽게 만들 뿐만 아니라 디버깅과 향후 수정도 간소화합니다.

출력:

파워셸 여러 줄 명령 - 출력 2

쉼표(,)를 사용하여 긴 코드 줄 나누기

쉼표(,)는 파이프라인 연산자와 같은 특정 맥락에서도 작동합니다.

특정 맥락, 즉 명령어 또는 스크립트 블록 내에서는 쉼표 연산자가 줄 계속 신호로도 작용할 수 있습니다. 이는 명령어를 포맷하거나 항목 목록을 전달할 때 특히 유용합니다.

예제 코드:

Get-EventLog -LogName Application -Newest 5 |
    Format-Table TimeGenerated, 
    EntryType, 
    Source, 
    @{n = 'Message'; e = { $_.Message.Split("`n")[0] } }

우리의 스크립트에서는 Get-EventLog를 사용하여 응용 프로그램 로그에서 최신 5개의 항목을 가져옵니다. 이 출력은 포맷팅을 위해 Format-Table로 파이프됩니다.

그런 다음 우리는 테이블에서 원하는 속성인 TimeGenerated, EntryType, Source, Message에 대한 사용자 정의 표현식을 나열하기 위해 쉼표 방법을 사용합니다. Message에 대한 사용자 정의 표현식은 첫 번째 줄만 표시하기 위해 계산된 속성을 사용합니다(@{n='Message'; e= { $_.Message.Split("n")[0] } }).

쉼표를 사용하여 이 명령어를 여러 줄로 나누어 다수의 속성이나 복잡한 표현식을 처리할 때 스크립트를 더욱 읽기 쉽게 만들었습니다.

출력:

파워셸 멀티라인 명령 - 출력 3

중괄호({})를 사용하여 긴 코드 줄 나누기

또한, 스크립트 블록을 정의할 때 중괄호({})를 사용하면 줄 계속이 직접적으로 가능합니다. 이는 루프, 조건문 또는 cmdlet에 명령 블록을 전달할 때 필수적입니다.

예제 코드:

$processes = Get-Process
$filteredProcesses = $processes | Where-Object {
    $_.WorkingSet -gt 100MB
} | ForEach-Object {
    $_.ProcessName
}
$filteredProcesses

우리는 Get-Process cmdlet을 사용하여 모든 프로세스의 목록을 가져오는 것으로 시작합니다. 그런 다음 파이프라인은 이러한 프로세스를 Where-Object로 전달하여 100MB 보다 작업 세트가 큰 프로세스를 필터링합니다.

생존한 프로세스는 ForEach-Object의 또 다른 스크립트 블록으로 전달되어 이름을 추출하고 출력합니다. 스크립트 블록에 대한 중괄호의 사용은 데이터가 파이프라인을 통해 명확하고 간결하며 기능적으로 흐르게 합니다.

출력:

파워쉘 다중 행 명령 - 출력 4

결론

이 기사에서는 PowerShell 스크립트의 가독성을 향상시키는 다양한 방법을 살펴보았습니다. 가독성은 스크립트를 쉽게 이해하고 유지 관리하는 데 중요하며, 특히 스크립트가 길고 복잡해질 수 있는 Windows PowerShell에서는 더더욱 중요합니다.

우리는 다중 행 명령을 위해 백틱 문자를 사용하는 일반적인 관행을 논의하는 것으로 시작했습니다. 이는 효과적이지만 때때로 가독성 문제와 잠재적인 버그를 초래할 수 있습니다.

그러나 PowerShell은 긴 코드 줄을 나누기 위한 더 직관적인 방법을 제공합니다. 우리는 이후 이러한 방법을 심도 있게 논의했습니다. 파이프라인(|), 쉼표(,), 중괄호({})와 같은 특정 연산자를 사용하여 스크립트 작성을 더 읽기 쉽고 유지 관리하기 쉽게 합니다.

이러한 방법은 코드의 시각적 구조를 개선할 뿐만 아니라 논리적 흐름도 향상시켜 스크립트를 디버깅하고 수정하기 쉽게 만듭니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn