빠른 링크
⭐ Linux 및 macOS에서도 사용 가능한 PowerShell
주요 내용
PowerShell은 다양한 컴퓨팅 작업의 자동화를 용이하게 하도록 설계된 다목적의 강력한 스크립팅 언어입니다.
파워셸 cmdlet은 특정 기능을 가진 개별화된 명령으로, “Get-Command” 명령을 통해 액세스하여 사용 가능한 옵션의 배열을 표시할 수 있습니다.
PowerShell은 Windows, macOS, Linux를 비롯한 다양한 운영 체제에서 사용할 수 있습니다.
PowerShell을 활용하면 개인이 자신의 컴퓨팅 장치에서 쉽고 안정적으로 자동화된 작업을 효율적으로 실행할 수 있습니다. Windows 기반 개인용 컴퓨터 또는 서버 환경에 맞는 사용자 지정 스크립트 구성을 시작하는 데 필요한 단계를 알아보세요.
파워셸 스크립팅 개요
Windows 운영 체제에서 기본 파워셸 스크립트를 만들려면 세 가지 기본 개념을 이해해야 합니다:
명령은 PowerShell에서 특정 작업이나 기능을 수행하는 데 사용되는 명령의 한 유형입니다. 이러한 명령은 각각 고유한 용도로 사용되는 도구 상자 내의 개별 도구로 생각할 수 있습니다. 이러한 명령은 간단하고 사용하기 쉽도록 설계되었기 때문에 초보자와 고급 사용자 모두 액세스할 수 있습니다. “cmdlet”이라는 용어 자체는 “명령”과 “let”이라는 단어의 조합에서 유래한 것으로, 명령을 실행하고 이를 다른 cmdlet에 인수로 전달하는 기능을 의미합니다. 전반적으로, cmdlet은 단 몇 줄의 코드를 사용하여 작업을 자동화하고 시스템의 다양한 측면을 제어할 수 있는 강력하고 유연한 방법을 제공합니다.
매개 변수는 매개 변수의 범위, 타이밍, 위치, 실행 방식 등 명령 또는 Cmdlet 집합의 실행과 관련된 구체적인 세부 사항을 설명하는 데 사용됩니다.
파이프라인은 커맨드릿의 출력과 관련 매개변수 간의 연결을 용이하게 하는 메커니즘으로, 추가 커맨드릿 및 함수와의 원활한 통합을 가능하게 합니다.
세 가지 구성 요소를 모두 통합하여 다양한 작업의 자동화를 용이하게 하는 사용자 친화적인 스크립트를 만들 수 있습니다.
특정 목적을 달성하기 위해 ‘파이프라인’이라고 하는 다양한 PowerShell cmdlet을 순서대로 활용할 수 있습니다.이 프로세스에는 효율적인 실행과 기능 향상을 위해 여러 명령을 함께 결합하는 작업이 포함됩니다. 이 방법을 사용하면 복잡한 작업을 관리 가능한 단계로 세분화하여 쉽게 실행할 수 있습니다.
PowerShell을 사용하여 이 파이프라인 시퀀스를 실행하려면 다음 형식과 유사한 명령을 활용할 수 있습니다:
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl
세부 명령
PowerShell은 개체를 조작하고 다양한 작업을 수행하기 위한 기본 제공 명령이 포함된 스크립팅 언어입니다. PowerShell의 이러한 기본 명령을 Cmdlet이라고 합니다.
“명령줄”로 발음되는 명령줄은 “.dll” 확장자를 추가하여 PowerShell 환경 내에서 사용되는 간결한 단일 목적 명령입니다. 커맨드릿은 사전 컴파일된 설계 덕분에 기능에 비해 효율성과 속도가 향상된 간소화된 프로그래밍 단위입니다.
PowerShell은 다양한 시스템 작업을 효율적이고 능률적으로 관리할 수 있는 광범위한 CLI(명령줄 인터페이스) 명령(일반적으로 “Cmdlet”이라고 함)을 제공합니다. 개별 명령을 하나하나 익히는 것은 비현실적이지만, 기본적인 PowerShell Cmdlet의 핵심 집합부터 시작하는 것은 스크립팅 능력을 더 탐구하고 성장시키기 위한 탄탄한 토대가 됩니다. 장치에 현재 설치된 Cmdlet을 살펴보기 위해서는 제공된 명령어를 실행하는 것으로 충분합니다.
Get-Command
결과를 자세히 살펴보면 동사-명사 명명법을 준수하고 있음을 알 수 있습니다. 이러한 접근 방식은 각 특정 커맨드릿이 수행하는 기능에 대한 이해도를 높여줍니다.
PowerShell은 다양한 작업을 실행하기 위한 다양한 cmdlet을 제공합니다. 예를 들어, Get-Command 명령을 사용하면 PowerShell 환경 내에서 액세스할 수 있는 명령의 목록이 생성됩니다. 마찬가지로 Get-Process 명령을 사용하면 현재 운영 중인 프로세스에 대한 정보를 검색할 수 있습니다. 또한 Copy-Item 명령을 사용하면 하나 또는 여러 개의 파일을 지정된 폴더로 전송할 수 있습니다.
사용자는 포괄적인 명령 집합을 제공받을 뿐만 아니라 예제, 단계별 활용 지침, 다양한 기능에 대한 심층적인 설명이 포함된 자세한 문서도 제공받습니다.
특정 커맨드릿과 그 올바른 사용법에 대한 자세한 정보를 얻으려면 다음 명령을 실행하면 추가 정보를 얻을 수 있습니다:
Get-Help <name-of-cmdlet>
PowerShell 매개변수 설명
Cmdlet에는 기능을 수정하기 위해 매개변수를 받아들이는 기능이 있습니다.Cmdlet 또는 함수를 실행할 때 매개 변수 값을 제공하여 대상, 타이밍, 위치 및 방법론을 지정하는 등 각 PowerShell 명령이 실행되는 조건을 지정할 수 있습니다.
“Get-Process” 명령은 운영 체제에서 현재 실행 중인 모든 활성 프로세스 목록을 검색합니다.
“Get-Process” 명령의 컨텍스트 내에서 “Name” 매개 변수를 통해 이름을 지정하여 특정 프로세스를 가져오는 것은 시스템에서 실행 중인 특정 작업을 검색하려는 사용자가 사용할 수 있는 옵션입니다. 이 방법을 사용하면 원하는 프로세스에 대한 정보를 효율적으로 추출하고 해당 프로세스의 동작, 성능 지표 및 리소스 활용 패턴에 대한 인사이트를 얻을 수 있습니다.
Get-Process -Name Slack
명령을 실행하면 “slack” 레이블이 붙은 프로세스를 볼 수 있습니다.
특정 변수는 “위치” 속성을 가지고 있어 명명할 필요가 없습니다. 따라서 `Get-Process -Name Slack` 및 `Get-Process Slack`과 같은 명령을 호출하면 동일한 결과가 나타납니다.
모든 커맨드릿에는 허용할 수 있는 고유한 매개 변수 집합이 있으며, 이 집합은 Get-Help 명령을 사용하고 해당 특정 Cmdlet의 구문 섹션으로 이동하여 확인할 수 있습니다.
Get-Help Get-Process
제공된 인터페이스는 지정된 명령줄 도구(Cmdlet)를 실행할 수 있는 모든 가능한 방법의 열거를 제공합니다.
Get-Process cmdlet은 “Name”, “Id”, “ComputerName”, “Module” 및 “FileVersionInfo”를 비롯한 다양한 매개 변수와 함께 사용할 수 있지만 이에 국한되지는 않습니다. 이러한 기호는 Get-Process cmdlet을 사용할 때 사용할 수 있는 앞서 언급한 매개 변수를 나타냅니다.
기호 | 이름 | 의미 |
---|---|---|
공백 | 매개 변수 doesnâ | |
– | 하이픈 | 매개변수 이름 표시 |
< €™ 입력을 허용하지 않음 < | 꺾쇠 괄호 | 텍스트 자리 표시자 |
[] | 괄호 | 하나 이상의 값을 받을 수 있는 매개 변수 |
{} | 중괄호 | 값 집합을 허용하는 매개변수 |
입력을 받도록 설계된 매개변수는 문자열, 정수, 부울 또는 날짜 시간 객체 등 필요한 특정 종류의 데이터를 지정하지만 이에 국한되지는 않습니다.
Get-Process [[-Name] <string[]>]
“Name” 매개변수는 단일 값이 아닌 여러 문자열 값을 허용할 수 있습니다.
Get-Process -Id <int[]>
“Id” 매개변수는 개체 컬렉션의 각 항목에 대한 고유 식별자로 해석될 수 있는 하나 이상의 정수 값을 허용하도록 설계되었습니다.
Get-Process cmdlet을 사용하여 프로세스 검색을 더욱 세분화하려면 ID 매개 변수를 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 형식의 PowerShell 스크립트로 저장할 수 있으므로 사용할 때마다 반복적으로 수동으로 입력할 필요가 없어집니다.
파워셸 스크립트 파일(PS1)을 생성하는 간단한 방법 중 하나는 스크립트 콘텐츠를 복사하여 메모장 등 원하는 텍스트 편집기에 직접 붙여넣은 다음, 파일 이름 확장자를 “.ps1″로 추가하여 결과 문서를 저장하는 것입니다.
PowerShell에서 PS1 스크립트를 활용하려면 “./ScriptName.ps1” 명령을 실행합니다:
PowerShell에서 스크립트를 실행하는 동안 발생할 수 있는 “권한 오류”를 해결하기 위한 한 가지 가능한 해결책은 관리 권한으로 PowerShell 환경을 운영하는 것입니다.이 작업은 PowerShell 인스턴스를 시작한 다음 관리자 계정에서 제공하는 상승된 권한을 사용하여 인스턴스 내에서 스크립트를 실행하여 수행할 수 있습니다.
실제로 PowerShell PS1 스크립트를 작성하는 데 능숙해졌습니다.
Linux 및 macOS에서도 사용 가능
PowerShell은 접근성이 뛰어난 스크립팅 언어로, 프로그래밍 기술을 개발하려는 초보 사용자에게 훌륭한 출발점이 될 수 있습니다. 과거에는 Windows 에코시스템 내에서만 사용하도록 제한되어 왔지만, 최근의 발전으로 macOS 및 다양한 Linux 배포판과 같은 다양한 플랫폼에서 사용할 수 있게 되었습니다. 이러한 다용도성은 서로 다른 운영 체제 간에 전문 지식을 원활하게 이식할 수 있게 함으로써 PowerShell의 매력을 더욱 높여줍니다.
아래 구절은 아인슈타인의 상대성 이론에서 예측한 효과인 시간 팽창의 개념을 간단하게 설명한 것으로, 자신의 기준 프레임에 대해 다른 물체에 대해 움직이는 물체의 시간이 느려지는 것처럼 보입니다.