당신은 PowerShell 코드를 작성하다가 막힌 적이 있나요? 더 이상 걱정하지 마세요! PowerShell을 잘 다루려면 기본 사항을 이해하는 것이 가장 좋은 방법 중 하나입니다. 몇 가지 기본 PowerShell 명령어를 알면 프로가 되어 관리 작업을 효율적으로 자동화할 수 있을 것입니다.
이 튜토리얼에서는 PowerShell 경험을 더 흥미롭게 만들기 위해 알아야 할 기본 PowerShell cmdlet을 배울 것입니다.
전제 조건
이 튜토리얼은 실습 중심으로 진행되지만 많은 전제 조건이 필요하지 않습니다. 따라오려면 PowerShell 5.1 이상이 설치된 Windows 또는 Linux 시스템이면 됩니다. 명령어는 Windows PowerShell을 사용하여 표시되었지만 아래 예제는 PowerShell 7+에서도 플랫폼 간에 작동합니다.
명령어 도움말 가져오기
보스처럼 도움말 없이 코드를 작성한 적이 있나요? 실제로 코드를 작성하는 동안 도움이 항상 필요할 것입니다. 코드나 명령을 명령줄 환경에서 실행하든 상관없이 Get-Help
cmdlet이 유용합니다.
Get-Help
cmdlet의 작동 방법을 배우면서 이 튜토리얼을 시작해 봅시다.
Get-Help
cmdlet은 오류 없이 어떤 명령을 효과적으로 사용할 수 있는 필요한 가이드를 제공합니다. 각 PowerShell 명령에 대한 설명서로 생각할 수 있습니다.
관리자 권한으로 PowerShell을 열고 아래의 Get-Help
명령을 실행하여 명령에 대한 (-Detailed
) 자세한 정보를 확인하세요. 예를 들어 Get-ExecutionPolicy
cmdlet의 경우입니다.

자세한 정보뿐만 아니라 명령에 대한 전체 정보를 보고 싶을 수도 있습니다. 그렇다면 Get-Help
명령에 -Full
매개변수를 추가하세요.
Get-Help
cmdlet 자체에 대한 전체 (-Full
) 정보를 얻으려면 아래의 코드를 실행하세요.

아마도 명령을 실행할 때 오류를 피하려면 더 많은 예제가 필요할 것입니다. 그 경우 -Examples
매개변수를 추가하여 명령을 작성하는 예제를 확인하세요.
Get-Help
명령을 실행하여 Get-Process
cmdlet을 사용하는 방법에 대한 예제 (-Examples
)를 얻으려면 아래의 코드를 실행하세요.

컴퓨터 프로세스 가져오기 with Get-Process
기억나시나요? 모든 프로세스, 서비스, 응용 프로그램 등을 표시하는 Windows 작업 관리자를요? 좋아요! Get-Process
cmdlet은 몇 단계만으로 작업 관리자를 열지 않고 컴퓨터의 모든 프로세스에 액세스할 수 있는 기본이면서 필수적인 cmdlet입니다.
모든 시스템 프로세스 목록을 테이블 형식으로 가져 오려면 다음 명령을 실행하십시오.

프로세스가 멈추고 컴퓨터가 느려지면
Get-Process
cmdlet을Stop-Process
cmdlet으로 파이핑하여 프로세스를 중지합니다. 예를 들어 다음과 같이 실행하십시오.Get-Process -Id 1252 | Stop-Process
, 여기서-Id 1252
는 중지하려는 프로세스의 프로세스 ID를 지정합니다.
Get-History를 사용하여 PowerShell 세션 기록 가져오기
최근 명령을 확인해야 할 필요가 있을 수 있습니다. 최근에 실행한 명령이 올바른지 또는 실제로 명령을 실행했는지 확인해야 할 수도 있습니다. 그러나 PowerShell에는 명령 기록이 있나요? 네! Get-History
cmdlet은 현재 PowerShell 세션에서 최근에 실행한 모든 명령의 객체를 반환합니다.
현재 세션에서 최근에 실행된 모든 명령의 목록을 가져오려면 아래 명령을 실행하세요.

기록에서 특정 명령을 보고 싶다면, 기록에서 명령의 ID 번호를 뒤에 붙인
-Id
매개변수를 추가하십시오. 예를 들어,Get-History -Id 2
를 실행하여 기록에서 두 번째 명령을 볼 수 있습니다.
Get-Service를 사용하여 시스템 서비스 표시
Get-Process
cmdlet과 마찬가지로 PowerShell은 시스템에서 실행 중인 모든 서비스를 볼 수 있게 해줍니다. Get-Service
cmdlet을 사용하면 데이터베이스 서버나 컴퓨터 화면 밝기를 자동으로 제어하는 응용 프로그램과 같은 모든 서비스를 볼 수 있습니다.
아래 명령을 실행하여 시스템에 있는 모든 서비스의 목록을 테이블 형식으로 얻을 수 있습니다. 이 명령을 사용하면 중지된 서비스도 볼 수 있습니다.

특정 문자로 시작하는 서비스를 찾고 있다면 와일드카드 문자 (*)를 추가하면 됩니다.
Get-Service
명령을 아래와 같이 실행하면 원하는 서비스의 첫 글자와 별표 (A*
)를 전달합니다. 와일드카드 문자를 추가하면 ‘A’로 시작하지 않는 모든 서비스를 필터링할 수 있습니다.

Start-Job를 사용하여 백그라운드 작업 실행하기
코드를 작성하는 것은 여전히 많은 양을 작성해야 할 경우 귀찮을 수 있지만 단일 명령어를 작성하는 데 시간이 오래 걸립니다. 문제 없습니다! PowerShell은 사용자 상호 작용 없이 코드나 명령어를 백그라운드 작업으로 실행하는 cmdlet을 제공합니다. Start-Job
cmdlet을 사용하면 PowerShell 환경에서 코드나 명령을 백그라운드 작업으로 실행할 수 있습니다.
Start-Job
명령을 아래와 같이 실행하여 Get-Command
cmdlet에 대한 백그라운드 작업을 시작합니다. 백그라운드 작업을 시작하면 명령어 출력이 명령줄에 표시되지 않습니다.

백그라운드 작업을 실행 중인데 작업이 여전히 실행 중인지 아니면 완료되었는지 어떻게 확인할까요? 세션에서 모든 작업을 가져오려면
Get-Job
cmdlet을 실행하세요.
Set-Location을 사용하여 작업 디렉터리 변경하기
있을 때 스크립트나 프로그램을 특정 위치에서 실행해야 하는 경우가 있습니다. 그런데 어떻게 디렉터리를 변경하나요? Set-Location
cmdlet이 도움이 될 겁니다. Set-Location
cmdlet은 명령에서 지정한 디렉터리로 현재 작업 디렉터리를 설정합니다.
아래의 코드를 실행하여 현재 작업 디렉터리를 C:\Users\hp\Desktop로 설정하세요. Computer의 사용자 이름으로 hp
를 변경하세요.
아래에서 프롬프트에서 C:\Users\hp\Desktop이 현재 작업 디렉터리로 설정된 것을 확인할 수 있습니다.

Test-Path를 사용하여 경로의 존재 여부 확인
PowerShell은 파일이 존재하지 않는 경로에 액세스하려고 시도할 때 버그를 표시할 수 있습니다. 그것을 피하는 방법은 무엇일까요? Test-Path
cmdlet은 직관적인 구문으로 경로가 존재하는지 여부를 확인할 수 있게 해줍니다.
이제 데스크톱에 NewFolder라는 이름의 폴더를 만드세요.
아래의 Test-Path
명령을 실행하고 테스트하려는 경로를 뒤에 붙입니다. 이 예제에서 명령은 C:\Users\hp\Desktop\NewFolder 경로가 존재하는지 테스트합니다.
아래에서는 경로가 존재하기 때문에 명령이 True 값을 반환했습니다. 그렇지 않으면 False 출력이 표시됩니다.

ConvertTo-HTML을 사용하여 PowerShell 객체를 HTML로 변환
데이터를 구성된 형식으로 선호한다면 ConvertTo-Html
cmdlet을 사용하여 데이터를 HTML로 변환하세요. 기본적으로 명령은 변환하려는 출력 파일과 파일 이름을 지정하여 저장합니다.
메모리에 있는 모든 PowerShell 명령(Get-Command
) 목록을 수집하고 목록을 HTML 파일로 변환(ConvertTo-Html
)하여 Command.html
이라는 HTML 파일을 생성하려면 아래 명령을 실행하세요.
HTML 파일은 이전에 작업 디렉토리를 변경했기 때문에 데스크톱에 저장됩니다. 대신 다른 위치에 HTML 파일을 저장하려면 전체 경로를 지정하세요. 예:
Get-Command | ConvertTo-HTML > C:\Temp\Commands.html
Export-CSV를 사용하여 PowerShell 객체를 CSV로 내보내기
만약 HTML 대신 CSV 형식의 보고서가 더 좋다고 생각한다면, Export-CSV
cmdlet을 사용하세요. ConvertTo-Html
cmdlet과 유사하게, Export-CSV
cmdlet을 사용하여 데이터를 CSV 파일로 내보낼 수 있습니다.
아래의 명령을 실행하여 PowerShell 명령 (Get-Command
) 목록을 수집하고 목록을 CSV 파일 (Export-CSV
)로 내보내세요.
ConvertTo-Html cmdlet과 마찬가지로 CSV 파일의 내보내기 경로도 지정할 수 있습니다:
Get-Command | Export-CSV C:\Temp\Commands.csv
Commands.csv 파일을 열면 아래와 같은 내용이 나타날 것입니다. 꽤 괜찮죠?

Get-Command로 사용 가능한 모든 PowerShell 명령 보기
목록에서 마지막 PowerShell 명령은 Get-Command
cmdlet입니다. Get-Command
cmdlet은 기본적으로 표 형식으로 실행할 수 있는 모든 PowerShell 명령을 나열합니다. 하지만 이전 예제에서 보았듯이, Get-Command
가 할 수 있는 일이 그게 전부가 아닙니다.
어쩌면 cmdlet 또는 별칭을 선택적으로 나열하려고 하는 것일지도 모릅니다. 그렇다면 Get-Command
cmdlet에 -CommandType
매개변수를 추가하여 지정한 명령 유형으로 출력을 필터링할 수 있습니다. -CommandType
매개변수의 값은 Alias
, Cmdlet
, 또는 Function
이 될 수 있습니다.
‘G’로 시작하는 이름을 가진 cmdlet만 나열하려면 아래의 Get-Command
명령을 실행하십시오 (-CommandType Cmdlet
, -Name G*
).

Get-Command
출력을 필터링하는 또 다른 방법은 해당 출력을 Select-Object
cmdlet으로 파이핑하는 것입니다. 알다시피 Get-Command
cmdlet에 의해 반환된 객체는 테이블 형식으로 구성됩니다. 이 테이블에서 열 이름은 객체에서 선택할 수 있는 속성을 나타냅니다.
모든 PowerShell 명령의 목록을 수집하고 각 명령의 정의 속성을 표시하려면 아래의 Get-Command
를 실행하십시오 (Select-Object -Property Definition
).

결론
이 튜토리얼에서는 기본 PowerShell 명령을 실행하는 방법에 대한 철저한 안내를 제공했습니다. 이제 여러분은 명령을 널리 파이핑하고 실행하는 방법을 알고 언제든지 코딩에 갇히지 않을 것입니다.
이 새로운 지식을 어떻게 활용할지 궁금하시죠? PowerShell 스크립트에서 여러 줄 명령을 작성하는 방법을 배우는 것은 어떨까요?
Source:
https://adamtheautomator.com/basic-powershell-commands/