핵심 요약
- PowerShell은 컴퓨터 작업 자동화를 지원하는 스크립트 언어입니다.
- Cmdlet은 특정 기능을 수행하는 PowerShell 명령어이며, ‘Get-Command’를 통해 사용 가능한 명령어를 확인할 수 있습니다.
- PowerShell은 Windows, macOS, Linux 환경에서 활용 가능합니다.
PowerShell은 컴퓨터 작업을 보다 간편하고 효율적으로 자동화할 수 있도록 설계된 스크립팅 도구입니다. 이제 Windows PC에서 스크립트를 작성하는 방법을 알아보겠습니다.
PowerShell 스크립팅 개요
Windows 환경에서 간단한 PowerShell 스크립트 작성을 시작하기 위해 알아야 할 세 가지 핵심 요소가 있습니다.
- Cmdlet: 하나의 기능을 수행하는 명령어입니다.
- 매개변수: Cmdlet/명령어가 언제, 어디서, 어떻게 작동해야 하는지를 지정합니다.
- 파이프라인: Cmdlet과 매개변수의 결과를 다른 Cmdlet이나 함수로 연결합니다.
이 세 가지 요소를 결합하면 작업 자동화를 위한 간단한 스크립트를 만들 수 있습니다.
아래는 여러 Cmdlet을 결합하여 작업을 수행하는 파이프라인의 예시입니다.
PowerShell에서 이 파이프라인을 실행하려면 다음과 같은 명령어를 사용합니다.
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry
| Place-Object Bowl
Cmdlet 상세 정보
다른 스크립트 언어와 유사하게 PowerShell은 객체 조작 및 다양한 작업을 위한 사전 정의된 명령어를 제공합니다. PowerShell 내에서 이러한 기본 명령어를 Cmdlet이라고 합니다.
Cmdlet(커맨드렛이라고 발음)은 .dll 확장자를 사용하는 작고 단일 기능을 가진 명령어로, PowerShell 환경에서 사용됩니다. 컴파일된 특성으로 인해 함수보다 빠른 실행 속도를 자랑합니다.
PowerShell은 수많은 Cmdlet을 제공하지만, 모든 것을 배울 필요는 없습니다. 기본적인 Cmdlet 몇 가지를 익히고, 스크립팅 과정에서 필요에 따라 추가로 학습할 수 있습니다. 시스템에 이미 설치된 Cmdlet을 확인하려면 다음 명령어를 실행하세요.
Get-Command
결과를 자세히 살펴보면 동사-명사 명명 규칙을 따르는 것을 알 수 있습니다. 이 규칙은 특정 Cmdlet의 기능을 더 쉽게 이해하도록 돕습니다.
예를 들어, ‘Get-Command’는 PowerShell에서 사용 가능한 명령어 목록을 제공하고, ‘Get-Process’는 현재 실행 중인 프로세스를 가져오며, ‘Copy-Item’은 하나 이상의 파일을 지정된 디렉토리로 복사합니다.
Cmdlet은 또한 사용 방법, 예시, 설명이 포함된 포괄적인 문서를 제공합니다.
특정 Cmdlet과 그 사용법에 대한 자세한 정보를 얻으려면 다음을 실행하십시오.
Get-Help <cmdlet 이름>
PowerShell 매개변수 설명
Cmdlet은 매개변수를 통해 동작을 수정할 수 있습니다. Cmdlet 또는 함수를 실행할 때 매개변수 값을 제공하여 각 PowerShell 명령어가 어떤 대상에 대해, 언제, 어디서, 어떻게 실행될지를 상세하게 정의할 수 있습니다.
예를 들어 ‘Get-Process’는 운영 체제 내의 모든 활성 프로세스를 나열합니다.
만약 특정 프로세스만 얻고 싶다면 어떻게 해야 할까요? 매개변수를 활용하여 이를 수행할 수 있습니다. 예를 들어, ‘Slack’ 프로세스만 가져오려면 ‘Get-Process’ Cmdlet과 ‘Name’ 매개변수를 함께 사용할 수 있습니다.
Get-Process -Name Slack
그러면 이름이 “slack”인 프로세스만 표시됩니다.
일부 매개변수는 위치 기반이며, 이는 이름이 선택 사항임을 의미합니다. 이 경우 ‘Get-Process -Name Slack’과 ‘Get-Process Slack’은 동일하게 동작합니다.
각 Cmdlet은 다양한 유형의 매개변수를 허용합니다. ‘Get-Help’ 명령어를 사용하면 ‘SYNTAX’ 섹션에서 해당 Cmdlet이 허용하는 매개변수를 확인할 수 있습니다.
Get-Help Get-Process
그러면 해당 Cmdlet을 실행할 수 있는 모든 가능한 방법의 목록이 표시됩니다.
이 경우 ‘Get-Process’ Cmdlet은 ‘Name’, ‘Id’, ‘ComputerName’, ‘Module’, ‘FileVersionInfo’ 등과 같은 매개변수를 허용합니다. 여기서 기호는 다음과 같은 의미를 가집니다.
기호 | 이름 | 의미 |
---|---|---|
공백 | 매개변수가 입력을 받지 않음. | |
– | 하이픈 | 매개변수 이름을 나타냄. |
<> | 꺾쇠 괄호 | 텍스트 자리 표시자. |
[] | 대괄호 | 하나 이상의 값을 허용하는 매개변수. |
{} | 중괄호 | 매개변수가 값 세트를 허용함. |
입력을 허용하는 매개변수는 문자열, 정수, 부울 또는 DateTime과 같이 필요한 데이터 유형을 나타냅니다. 예를 들면 다음과 같습니다.
Get-Process [[-Name] <string[]>]
이는 ‘Name’ 매개변수가 하나 이상의 문자열 값을 허용한다는 의미입니다.
Get-Process -Id <int[]>
이는 ‘Id’ 매개변수가 하나 이상의 정수 값을 허용한다는 의미입니다.
이전의 ‘Get-Process’ 예제에서는 ‘Name’ 매개변수를 사용하여 결과 범위를 좁혔습니다. 그러나 더욱 구체적인 프로세스를 지정하려면 구문에 명시된 대로 정수가 필요한 ‘Id’ 매개변수를 사용할 수 있습니다.
Get-Process -Id 3016
그러면 결과 목록에 하나의 프로세스만 나타납니다.
파이프라인 생성
PowerShell은 모든 데이터를 객체로 처리합니다. 스크립트를 작성하기 위해 이러한 객체는 파이프 기호(|)로 연결된 일련의 Cmdlet 또는 함수를 통해 흐릅니다. 효과적인 스크립트를 작성하려면 올바른 Cmdlet을 선택하고 파이프라인을 사용하여 논리적인 순서로 연결하는 것이 중요합니다.
특정 폴더에서 저장 공간을 가장 많이 차지하는 파일 5개를 정렬하고 표시하는 스크립트를 생성한다고 가정해 봅시다. 파일 정렬 스크립트를 만드는 더 강력한 방법도 있지만, 다음 한 줄의 스크립트는 이해하기 쉬울 것입니다.
PowerShell에서 이를 수행하려면 다음과 같은 파이프라인을 사용합니다.
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
파이프라인을 PS1 스크립트로 저장
이제 작동하는 파이프라인이 있으므로, 이를 PS1 스크립트 파일로 저장하여 필요할 때마다 코드를 다시 입력할 필요 없이 재사용할 수 있습니다.
PS1 파일을 만드는 가장 쉬운 방법은 스크립트를 메모장에 붙여넣고, 파일 확장자를 .ps1로 저장하는 것입니다.
PS1 파일을 생성한 후에는 PowerShell에서 ‘./ScriptName.ps1’ 명령어를 실행하여 사용할 수 있습니다.
축하합니다! 이제 PowerShell PS1 스크립트를 만들 수 있게 되었습니다.
PowerShell은 Linux 및 macOS에서도 사용 가능합니다.
PowerShell은 누구나 쉽게 배울 수 있는 최고의 초보자용 스크립팅 언어 중 하나입니다. 과거에는 PowerShell이 Windows 환경에서만 사용되었지만, 이제는 최신 버전의 PowerShell을 macOS와 다양한 Linux 배포판에서도 사용할 수 있게 되었습니다! Windows에서 습득한 지식을 다른 운영 체제에서도 적용할 수 있게 되어 PowerShell의 활용 가치는 더욱 높아졌습니다.