PowerShell은 Microsoft에서 개발한 커맨드 라인 셸 및 스크립트 언어입니다. 이는 주로 Windows 운영 체제에서 사용되며 강력한 자동화 및 스크립팅 기능을 제공합니다. PowerShell은 명령줄 환경에서 시스템 관리, 구성 및 자동화를 수행하는 데 사용됩니다.
PowerShell의 주요 특징
PowerShell은 Windows 운영 체제와 관련된 거의 모든 작업을 수행하는 다양한 내장 명령어를 제공합니다. 이러한 명령어는 파일 관리, 네트워크 설정, 서비스 관리, 레지스트리 조작 등 다양한 작업을 수행할 수 있습니다.
- PowerShell은 스크립트 언어로 사용할 수 있으며 복잡한 작업을 자동화하는 스크립트를 작성하는 데 적합합니다. PowerShell 스크립트는 확장자 .ps1을 가지며, 변수, 제어 구조, 함수 등과 같은 프로그래밍 요소를 사용할 수 있습니다.
- PowerShell은 명령어의 출력을 다른 명령어의 입력으로 전달하는 파이프라인 기능을 제공합니다. 이를 통해 여러 명령어를 조합하여 복잡한 작업을 수행할 수 있습니다.
- PowerShell은 원격 시스템에서도 사용할 수 있으며 원격 서버 또는 클라이언트의 구성 및 관리를 수행할 수 있습니다.
- PowerShell은 시스템 관리 및 작업 자동화를 위해 설계되었으며 대규모 환경에서 반복적인 작업을 간소화하고 효율적으로 수행하는 데 사용됩니다.
- PowerShell은 사용자 정의 함수와 모듈을 만들어 기능을 확장할 수 있습니다. 이러한 모듈은 다른 사용자와 공유하거나 재사용할 수 있습니다.
PowerShell Core와 Windows PowerShell
PowerShell은 일반적으로 Windows PowerShell와 PowerShell Core로 분류됩니다. PowerShell이라는 용어는 Windows 운영 체제에 내장된 명령줄 셸 및 스크립트 언어를 지칭할 때 사용됩니다. Windows PowerShell은 Windows의 PowerShell 버전을 가리키며, 주로 Windows 운영 체제에 내장되어 있는 PowerShell을 의미하고 .NET Framework
를 기반으로 하며 Windows 운영 체제와 강력한 통합을 제공합니다.
PowerShell Core는 플랫폼 간 호환성을 제공하며, Windows PowerShell은 주로 Windows 환경에서 사용됩니다. 둘 다 PowerShell 스크립트를 작성하고 실행하는 데 사용되며, 원하는 환경과 요구 사항에 따라 선택할 수 있습니다.
Windows PowerShell
Windows PowerShell은 .NET Framework를 기반으로 한 오래된 버전의 PowerShell입니다. 이 도구는 여전히 강력하며, Windows 7 이상의 운영 체제에서 사용할 수 있습니다. 주로 Windows 운영 체제와 깊게 통합되어 있는 작업에 적합한 도구로, Windows 서비스나 프로세스 관리 등과 같은 작업에 사용됩니다.
- 원래 Windows PowerShell은 Windows 환경 전용으로 개발되었지만, 이후에 개발 과정에서 크로스 플랫폼 호환성을 목표로 한 새로운 버전인 PowerShell Core가 나오게 되었습니다.
- PowerShell Core는 Windows 이외의 여러 플랫폼에서도 실행 가능하며, macOS, Linux, 그리고 다양한 Windows 버전에서 작동합니다. 이로써 PowerShell의 강력한 스크립트 작성 및 자동화 능력을 다양한 환경에서 활용할 수 있게 되었습니다.
PowerShell Core
그러나 원래 Windows PowerShell은 오직 Windows 환경에 한정되어 있었습니다. 그래서 Microsoft는 크로스 플랫폼 호환성을 목표로 새로운 버전인 PowerShell Core를 개발하게 되었습니다. PowerShell Core는 .NET Core를 기반으로 하여 macOS와 Linux 등 다양한 운영체제 에서도 실행할 수 있도록 설계되었습니다. 따라서 사용자는 이제 Windows가 아닌 환경에서도 PowerShell의 강력한 스크립팅 및 자동화 능력을 활용할 수 있게 되었습니다.
- 최신 기술 및 프레임워크에 대한 지원이 추가되었으며, 일부 구형 API 및 cmdlet가 제거되었습니다. 그러나 대부분의 경우에는 Windows PowerShell 스크립트를 그대로 사용할 수 있어 기존 스크립트를 활용하기 용이합니다.
- PowerShell Core는 다양한 플랫폼에서 강력한 스크립트 작성 및 자동화 능력을 제공하므로, 여러 운영 체제에서 작업하는 경우에 유용합니다.
- Windows에서는 Microsoft Store를 통해서 추가로 설치하면 바로 사용할 수 있으며, 오픈 소스로 개발 및 배포되고 있습니다.
PowerShell 기본 사용법
Windows 운영 체제에서 PowerShell을 검색하면 PowerShell을 실행할 수 있으며, 다음과 같이 사용할 수 있습니다.
도움말 보기
Get-Help 명령어이름
명령어에 대한 도움말을 보려면 Get-Help
명령어를 사용합니다. 예를 들어, Get-Help Get-ChildItem
명령어를 실행하면 Get-ChildItem
명령어에 대한 도움말을 확인할 수 있습니다. PowerShell의 명령어에 대한 자세한 정보를 얻고 싶은 경우 유용합니다.
현재 디렉토리 확인
Get-Location
PowerShell에서 현재 작업 디렉토리를 확인하려면 이 명령어를 사용합니다. 현재 디렉토리를 확인하면 어떤 디렉토리에서 작업 중인지 알 수 있으며, 파일 또는 스크립트를 작성할 때 중요한 정보가 될 수 있습니다.
pwd
pwd는 Get-Location의 줄임말로 현재 디렉토리를 확인하는데 사용되고 이 역시 현재 디렉토리의 경로를 출력합니다.
파일 및 디렉토리 관리 명령
파일 및 디렉토리를 관리하려면 Get-ChildItem
명령어를 사용하여 디렉토리 내용을 나열하고, New-Item
로 새 파일 또는 디렉토리를 만들고, Copy-Item
으로 파일을 복사하고, Move-Item
으로 파일을 이동등을 수행할 수 있습니다. 파일 및 디렉토리 관리는 PowerShell에서 자주 수행하는 작업 중 하나입니다.
Get-ChildItem
또는 dir
Get-ChildItem
디렉토리 내용을 나열할 때 사용됩니다. 예를 들어, 현재 디렉토리의 파일과 하위 디렉토리를 나열하려면 다음과 같이 입력합니다.
New-Item
New-Item -Path "새파일.txt" -ItemType File
새 파일 또는 디렉토리를 생성할 때 사용됩니다. 예를 들어, 새로운 텍스트 파일을 만들려면 다음과 같이 입력합니다. 이 명령어는 "새파일.txt"라는 이름의 새로운 텍스트 파일을 생성합니다.
Copy-Item
Copy-Item -Path "원본파일.txt" -Destination "목적지경로"
파일을 복사할 때 사용됩니다. 예를 들어, 파일을 다른 디렉토리로 복사하려면 다음과 같이 입력합니다.이 명령어는 "원본파일.txt"를 "목적지경로"로 복사합니다.
Move-Item
Move-Item -Path "파일.txt" -Destination "이동할경로"
파일을 이동할 때 사용됩니다. 예를 들어, 파일을 다른 디렉토리로 이동하려면 다음과 같이 입력합니다.이 명령어는 "파일.txt"를 "이동할경로"로 이동합니다.
Remove-Item
Remove-Item -Path "삭제할파일.txt"
파일 또는 디렉토리를 삭제할 때 사용되며 예를 들어, 삭제할파일.txt
이라는 파일을 삭제하려면 다음과 같이 입력합니다.
변수 사용
PowerShell에서 변수를 만들고 값을 할당하려면 $ 기호를 사용합니다. 예를 들어, $myVariable = "Hello, World!"는 변수를 만들고 문자열 값을 할당하는 것입니다. PowerShell에서 변수 사용은 매우 중요한 개념 중 하나입니다. 변수를 통해 데이터를 저장하고 관리할 수 있습니다.
변수 만들기 및 값 할당
$myVariable = "Hello, World!"
PowerShell에서 변수를 만들 때는 $
기호를 사용하고, 값을 할당할 때는 =
를 사용합니다. 예를 들어, 변수에 "Hello, World!" 문자열을 할당하려면 다음과 같이 입력합니다. 이제 $myVariable
은 문자열 "Hello, World!"를 저장하는 변수가 됩니다.
변수 값 출력
$myVariable
변수에 할당된 값을 출력하려면 변수 이름을 사용합니다. 예를 들어, 위에서 만든 $myVariable
의 값을 출력하려면 다음과 같이 입력합니다. 이 명령어를 실행하면 가 출력됩니다.
변수 재할당
$myVariable = "New Value"
위 명령으로 변수에 새로운 값을 할당할 수 있습니다. 이전 변수 값은 새로운 값으로 대체됩니다. 이제 $myVariable
은 New Value를 저장하게 됩니다.
변수 삭제
Remove-Variable -Name myVariable
변수를 삭제하려면 Remove-Variable
명령어를 사용합니다. 이 명령어를 실행하면 $myVariable
변수가 삭제됩니다.
스크립트 작성
PowerShell 스크립트 작성은 PowerShell의 강력한 기능 중 하나입니다. 스크립트를 사용하여 여러 명령어를 자동화하고 반복 작업을 효과적으로 수행할 수 있습니다.
스크립트 파일 생성
PowerShell 스크립트는 확장자 .ps1
을 가집니다. 원하는 디렉토리에 새로운 .ps1
파일을 만듭니다. 예를 들어, MyScript.ps1이라는 스크립트 파일을 만들 수 있습니다.
스크립트 편집
$message = "Hello, World!"
Write-Output $message
만든 스크립트 파일을 원하는 텍스트 에디터 (예: vi 에디터, Visual Studio Code 등)로 엽니다. 스크립트 내용을 작성하고 저장합니다. 스크립트는 PowerShell 명령어와 스크립트 블록으로 구성됩니다.
스크립트 실행
.\Hello.ps1
스크립트를 실행하려면 PowerShell을 열고 스크립트 파일의 경로를 지정합니다. 위와 같이 .\스크립트이름.ps1
형식으로 입력하고 실행합니다. 이 명령어를 실행하면 스크립트가 실행되고 결과가 표시됩니다.
PowerShell 모듈 사용
PowerShell 모듈은 추가 기능을 제공하며, Import-Module 명령어를 사용하여 모듈을 가져와 사용할 수 있습니다. 모듈은 기능을 확장하고 PowerShell 스크립트에서 사용할 수 있는 다양한 cmdlet을 제공합니다. PowerShell 모듈 사용은 PowerShell 기능을 확장하고 추가 기능을 가져와 사용할 수 있는 중요한 개념입니다.
모듈 가져오기
Import-Module ExampleModule
모듈을 사용하려면 먼저 해당 모듈을 가져와야 합니다. 이를 위해 Import-Module
명령어를 사용합니다. 예를 들어, ExampleModule
이라는 모듈을 가져오려면 위와 같이 입력합니다.
모듈 기능 사용
Get-ExampleData
모듈을 가져온 후에는 해당 모듈에서 제공하는 cmdlet(명령어)을 사용할 수 있습니다. 모듈은 특정 작업을 수행하는 데 필요한 cmdlet을 제공합니다. 예를 들어, ExampleModule
이 특정 작업을 위해 Get-ExampleData
라는 cmdlet을 제공한다고 가정하면, 이를 다음과 같이 사용합니다.
모듈 제거
Remove-Module ExampleModule
모듈을 더 이상 사용하지 않을 때는 Remove-Module
명령어를 사용하여 모듈을 제거할 수 있습니다. 위와 같이 입력하면 모듈이 제거됩니다.
PowerShell 스크립트 실행 정책 변경
실행 정책은 스크립트 실행을 제어하는데 사용됩니다. 실행 정책을 변경하려면 Set-ExecutionPolicy
명령어를 사용하며, 이를 통해 어떤 스크립트를 실행할 수 있는지 제어할 수 있습니다. 스크립트 실행 정책 변경은 PowerShell 스크립트를 실행할 때 중요한 요소 중 하나입니다. 실행 정책을 변경하여 스크립트 실행을 제어할 수 있습니다.
실행 정책 확인
Get-ExecutionPolicy
현재의 실행 정책을 확인하려면 다음 명령어를 사용합니다. 이 명령어를 실행하면 현재의 실행 정책 설정이 표시됩니다.
실행 정책 변경
Set-ExecutionPolicy RemoteSigned
실행 정책을 변경하려면 Set-ExecutionPolicy
명령어를 사용합니다. 예를 들어, RemoteSigned 실행 정책을 설정하려면 위와 같이 입력합니다.
참고: 실행 정책을 변경하면 스크립트 실행에 관한 규칙이 변경됩니다. RemoteSigned 정책은 로컬 스크립트는 자유롭게 실행되지만 원격 스크립트는 서명되어야 합니다.
실행 정책 적용
정책을 변경한 후에는 변경 내용이 적용되기 위해 PowerShell 세션을 다시 시작해야 할 수 있습니다. PowerShell을 종료하고 다시 실행하면 새로운 실행 정책이 적용됩니다.
PowerShell을 사용한 자동화
PowerShell은 시스템 관리 및 자동화 작업에 매우 강력합니다. 스크립트를 작성하여 반복적인 작업을 자동화하고 시스템 구성 및 모니터링을 효율적으로 수행할 수 있습니다.
- 작업 자동화 스크립트 작성: PowerShell 스크립트를 작성하여 자동화하려는 작업을 정의합니다. 예를 들어, 파일 복사, 디렉토리 정리, 시스템 모니터링, 로그 생성 등 다양한 작업을 PowerShell 스크립트로 자동화할 수 있습니다.
- 스케줄링: 자동화된 스크립트를 특정 시간 또는 이벤트에 따라 실행하려면 스케줄링 도구를 사용합니다. Windows에서는 작업 스케줄러를 사용하여 PowerShell 스크립트를 주기적으로 실행할 수 있습니다.
- 시스템 구성 및 모니터링: PowerShell은 시스템 설정 및 모니터링에 사용될 수 있습니다. 예를 들어, 시스템 구성을 검사하거나 이벤트 로그를 모니터링하는 스크립트를 작성할 수 있습니다.
- 자동화된 작업 흐름: PowerShell 스크립트는 여러 작업을 조합하여 자동화된 작업 흐름을 구성하는 데 사용됩니다. 조건문, 반복문, 함수 등을 활용하여 복잡한 작업을 자동화할 수 있습니다.
- 오류 처리 및 로깅: 스크립트에서 발생할 수 있는 오류에 대한 처리 및 로깅 메커니즘을 구현하여 자동화된 작업의 안정성을 유지합니다.