Windows PowerShell 스크립팅이란 무엇입니까?

주요 시사점

  • 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을 사용할 수 있습니다. 모두 배울 필요는 없습니다. 몇 가지 기본 PowerShell Cmdlet을 학습한 후 스크립팅 과정을 진행하면서 계속 학습할 수 있습니다. 컴퓨터에 이미 설치된 Cmdlet을 보려면 다음을 실행합니다.

 Get-Command 

결과를 자세히 살펴보면 동사-명사 명명 규칙을 따르고 있음을 알 수 있습니다. 이렇게 하면 특정 Cmdlet의 기능을 더 쉽게 이해할 수 있습니다.

예를 들어 Get-Command는 PowerShell에서 사용할 수 있는 명령 목록을 제공합니다. Get-Process는 현재 활성화된 프로세스를 가져오고 Copy-Item은 하나 이상의 파일을 특정 디렉터리에 복사합니다.

또한 Cmdlet은 해당 기능에 대한 예제, 사용 지침 및 설명이 포함된 광범위한 문서와 함께 번들로 제공됩니다.

특정 Cmdlet 및 사용 방법에 대해 자세히 알아보려면 다음을 실행하세요.

 Get-Help <name-of-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 파일을 만든 후에는 ./ScriptName.ps1을 실행하여 PowerShell에서 사용할 수 있습니다.

축하해요! 이제 PowerShell PS1 스크립트를 만들 수 있습니다.

PowerShell은 Linux 및 macOS에서도 사용할 수 있습니다.

PowerShell은 누구나 배울 수 있는 최고의 초보 스크립팅 언어 중 하나입니다. 과거에는 PowerShell이 ​​Windows로만 제한되었지만 이제 업데이트된 버전의 PowerShell을 macOS 및 다양한 Linux 배포판에서도 사용할 수 있습니다! Windows에서 다른 운영 체제로 지식을 이전할 수 있으므로 PowerShell이 ​​더욱 매력적입니다.