10가지 기본 PowerShell 명령어

당신은 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 -Name Get-ExecutionPolicy -Detailed
Getting Detailed Information of Commands

자세한 정보뿐만 아니라 명령에 대한 전체 정보를 보고 싶을 수도 있습니다. 그렇다면 Get-Help 명령에 -Full 매개변수를 추가하세요.

Get-Help cmdlet 자체에 대한 전체 (-Full) 정보를 얻으려면 아래의 코드를 실행하세요.

Get-Help Get-Help -Full
Getting Full Information of Commands

아마도 명령을 실행할 때 오류를 피하려면 더 많은 예제가 필요할 것입니다. 그 경우 -Examples 매개변수를 추가하여 명령을 작성하는 예제를 확인하세요.

Get-Help 명령을 실행하여 Get-Process cmdlet을 사용하는 방법에 대한 예제 (-Examples)를 얻으려면 아래의 코드를 실행하세요.

 Get-Help Get-Process -Examples
Applying -Examples to get help for Get-Process

컴퓨터 프로세스 가져오기 with Get-Process

기억나시나요? 모든 프로세스, 서비스, 응용 프로그램 등을 표시하는 Windows 작업 관리자를요? 좋아요! Get-Process cmdlet은 몇 단계만으로 작업 관리자를 열지 않고 컴퓨터의 모든 프로세스에 액세스할 수 있는 기본이면서 필수적인 cmdlet입니다.

모든 시스템 프로세스 목록을 테이블 형식으로 가져 오려면 다음 명령을 실행하십시오.

Get-Process
Getting All Windows Processes

프로세스가 멈추고 컴퓨터가 느려지면 Get-Process cmdlet을 Stop-Process cmdlet으로 파이핑하여 프로세스를 중지합니다. 예를 들어 다음과 같이 실행하십시오. Get-Process -Id 1252 | Stop-Process, 여기서 -Id 1252는 중지하려는 프로세스의 프로세스 ID를 지정합니다.

Get-History를 사용하여 PowerShell 세션 기록 가져오기

최근 명령을 확인해야 할 필요가 있을 수 있습니다. 최근에 실행한 명령이 올바른지 또는 실제로 명령을 실행했는지 확인해야 할 수도 있습니다. 그러나 PowerShell에는 명령 기록이 있나요? 네! Get-History cmdlet은 현재 PowerShell 세션에서 최근에 실행한 모든 명령의 객체를 반환합니다.

현재 세션에서 최근에 실행된 모든 명령의 목록을 가져오려면 아래 명령을 실행하세요.

Get-History
Getting the commands history of the current session

기록에서 특정 명령을 보고 싶다면, 기록에서 명령의 ID 번호를 뒤에 붙인 -Id 매개변수를 추가하십시오. 예를 들어, Get-History -Id 2를 실행하여 기록에서 두 번째 명령을 볼 수 있습니다.

Get-Service를 사용하여 시스템 서비스 표시

Get-Process cmdlet과 마찬가지로 PowerShell은 시스템에서 실행 중인 모든 서비스를 볼 수 있게 해줍니다. Get-Service cmdlet을 사용하면 데이터베이스 서버나 컴퓨터 화면 밝기를 자동으로 제어하는 응용 프로그램과 같은 모든 서비스를 볼 수 있습니다.

아래 명령을 실행하여 시스템에 있는 모든 서비스의 목록을 테이블 형식으로 얻을 수 있습니다. 이 명령을 사용하면 중지된 서비스도 볼 수 있습니다.

Get-Service
Getting all available services on the local computer

특정 문자로 시작하는 서비스를 찾고 있다면 와일드카드 문자 (*)를 추가하면 됩니다.

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

Get-Service A*
Getting all services that start with the letter ‘A’

Start-Job를 사용하여 백그라운드 작업 실행하기

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

Start-Job 명령을 아래와 같이 실행하여 Get-Command cmdlet에 대한 백그라운드 작업을 시작합니다. 백그라운드 작업을 시작하면 명령어 출력이 명령줄에 표시되지 않습니다.

Start-Job -ScriptBlock {Get-Command}
Starting a background job for Get-Command

백그라운드 작업을 실행 중인데 작업이 여전히 실행 중인지 아니면 완료되었는지 어떻게 확인할까요? 세션에서 모든 작업을 가져오려면 Get-Job cmdlet을 실행하세요.

Set-Location을 사용하여 작업 디렉터리 변경하기

있을 때 스크립트나 프로그램을 특정 위치에서 실행해야 하는 경우가 있습니다. 그런데 어떻게 디렉터리를 변경하나요? Set-Location cmdlet이 도움이 될 겁니다. Set-Location cmdlet은 명령에서 지정한 디렉터리로 현재 작업 디렉터리를 설정합니다.

아래의 코드를 실행하여 현재 작업 디렉터리를 C:\Users\hp\Desktop로 설정하세요. Computer의 사용자 이름으로 hp를 변경하세요.

Set-Location C:\Users\hp\Desktop

아래에서 프롬프트에서 C:\Users\hp\Desktop이 현재 작업 디렉터리로 설정된 것을 확인할 수 있습니다.

Changing Working Directory

Test-Path를 사용하여 경로의 존재 여부 확인

PowerShell은 파일이 존재하지 않는 경로에 액세스하려고 시도할 때 버그를 표시할 수 있습니다. 그것을 피하는 방법은 무엇일까요? Test-Path cmdlet은 직관적인 구문으로 경로가 존재하는지 여부를 확인할 수 있게 해줍니다.

이제 데스크톱에 NewFolder라는 이름의 폴더를 만드세요.

아래의 Test-Path 명령을 실행하고 테스트하려는 경로를 뒤에 붙입니다. 이 예제에서 명령은 C:\Users\hp\Desktop\NewFolder 경로가 존재하는지 테스트합니다.

Test-Path C:\Users\hp\Desktop\NewFolder

아래에서는 경로가 존재하기 때문에 명령이 True 값을 반환했습니다. 그렇지 않으면 False 출력이 표시됩니다.

Testing if the path exists

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

# 모든 PowerShell 명령을 포함하는 Commands.html 파일을 생성합니다.
Get-Command | ConvertTo-Html > Commands.html

Export-CSV를 사용하여 PowerShell 객체를 CSV로 내보내기

만약 HTML 대신 CSV 형식의 보고서가 더 좋다고 생각한다면, Export-CSV cmdlet을 사용하세요. ConvertTo-Html cmdlet과 유사하게, Export-CSV cmdlet을 사용하여 데이터를 CSV 파일로 내보낼 수 있습니다.

아래의 명령을 실행하여 PowerShell 명령 (Get-Command) 목록을 수집하고 목록을 CSV 파일 (Export-CSV)로 내보내세요.

Get-Command | Export-CSV Commands.csv

ConvertTo-Html cmdlet과 마찬가지로 CSV 파일의 내보내기 경로도 지정할 수 있습니다: Get-Command | Export-CSV C:\Temp\Commands.csv

Commands.csv 파일을 열면 아래와 같은 내용이 나타날 것입니다. 꽤 괜찮죠?

Opening Exported Commands.csv in Microsoft Excel

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 -Name G* -CommandType Cmdlet
Getting all cmdlets that start with the letter ‘G’

Get-Command 출력을 필터링하는 또 다른 방법은 해당 출력을 Select-Object cmdlet으로 파이핑하는 것입니다. 알다시피 Get-Command cmdlet에 의해 반환된 객체는 테이블 형식으로 구성됩니다. 이 테이블에서 열 이름은 객체에서 선택할 수 있는 속성을 나타냅니다.

모든 PowerShell 명령의 목록을 수집하고 각 명령의 정의 속성을 표시하려면 아래의 Get-Command를 실행하십시오 (Select-Object -Property Definition).

Get-Command | Select-Object -Property Definition
Property Definition

결론

이 튜토리얼에서는 기본 PowerShell 명령을 실행하는 방법에 대한 철저한 안내를 제공했습니다. 이제 여러분은 명령을 널리 파이핑하고 실행하는 방법을 알고 언제든지 코딩에 갇히지 않을 것입니다.

이 새로운 지식을 어떻게 활용할지 궁금하시죠? PowerShell 스크립트에서 여러 줄 명령을 작성하는 방법을 배우는 것은 어떨까요?

Source:
https://adamtheautomator.com/basic-powershell-commands/