Windows Powershell

Heena·2022년 8월 7일
0

PowerShell이란?

PowerShell은 명령줄 셸, 스크립팅 언어 및 구성 관리 프레임워크로 구성된 플랫폼 간 작업 자동화 솔루션. Windows, Linux 및 maxOS에서 실행할 수 있다.

PowerShell 명령(cmdlet)이란?

PowerShell의 명령cmdlet(command-lets으로 발음)이라고 한다. cmdlet 외에도 PowerShell을 사용하면 시스템에서 사용할 수 있는 모든 명령을 실행할 수 있다.

cmdlet이란?

cmdlet은 독립 실행 파일이 아닌 네이티브 PowerShell 명령이다. cmdlet은 PowerShell 모듈에 수집되어 요청 시 로드될 수 있다. cmdlet은 모든 컴파일된 .NET 언어 또는 PowerShell 스크립팅 언어로 쓸 수 있다.

동사-명사 형식의 쌍으로 cmdlet의 이름을 지정한다. 예를 들어 PowerShell에 포함되어 있는 Get-Command cmdlet은 명령 셸에 등록된 모든 cmdlet을 검색한다. 동사는 cmdlet이 수행하는 작업을 나타내고, 명사는 해당 cmdlet 작업이 수행되는 대상 리소스를 나타낸다. 기본적으로 명령어는 대소문자를 구분하지 않는다.

동사명사
Get, New, Restart, Resume, Set, Start, Stop, Suspend 등Computer, Service, Host, Alias, ChildItem 등

PowerShell 명령어

PowerShell 버전 확인

$PSVersionTable

PowerShell 별칭(alias) 확인

PowerShell에서는 Linux 명령어 형식의 명령어를 사용할 수 있다. 주요 명령어의 경우 별칭(alias)로 정의되어 있으므로 "Get-Alias" 명령어를 통해 별칭 목록을 확인할 수 있으며, "Set-Alias" 명령어를 통해 자신만의 명령어를 정의할 수도 있다.

PowerShell 도움말(help) 확인

"Get-Help" 명령어를 통해 명령어 사용 방법을 확인할 수 있다. PowerShell 3부터는 운영 체제와 함께 제공되지 않으므로 "Update-Help" 명령어를 통해 도움말을 업데이트할 수 있다.

자주 사용하는 명령어

"Get-Command" 명령어를 통해 더 많은 명령어를 확인할 수 있다.

명령어(cmdlet)별칭(alias)설명
Get-Locationgl / pwd (= bash 명령어)현재 위치 가져오기
Set-Locationsl / cd (= cmd.exe 명령어) / chdir현재 위치 설정
Get-ChildItemgci / dir / ls폴더 내 모든 파일 및 폴더 표시
Copy-Itemcopy / cp / cpi파일 및 폴더 복사
New-Itemni파일 및 폴더 만들기
Remove-Itemrm / ri / rd / del폴더 내의 모든 파일 및 폴더 제거

명령어 사용 방법

"Get-Help" 명령어를 통해 각 명령어의 사용 방법을 확인할 수 있다.

현재 위치 가져오기(Get-Location)

<PowerShell>
Get-Location

**********************************************
<Output>
Path
____
C:\Documents and Settins\PowerUser

현재 위치 설정(Set-Location)

<Parameters>
>> -PassThru
 : 지정한 위치 출력됨(미입력시 현재 위치만 설정, 출력은 되지 않는다.)
 
********************************************** 
<PowerShell>
Set-Location -Path C:\Windows -PassThru

**********************************************
<Output>

Path
____
C:\Windows

폴더 내 모든 파일 및 폴더 표시(Get-ChildItem)

<Parameters>
>> -Force : 숨겨진 항목이나 시스템 항목 표시
>> -Recurse : 포함된 항목 모두 표시
>> -Filter : 필터
>> -Include : 포함
>> -Exclude : 제외
>> Where-Object : 항목의 다른 속성 기반의 복잡한 필터링 수행

**********************************************
<PowerShell>
Get-ChildItem -Path C:\ -Force

Get-ChildItem -Path C:\ -Recurse

/*
Program Files 폴더 내 2005년 10월 1일 이후 마지막으로 수정되었고,
1MB보다 작거나 10MB보다 크지 않은 모든 실행 파일 검색
*/

Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | 
Where-Object -FilterScript {($_.LastWriteTime -gt '2005-10-01') 
-and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)}

파일 및 폴더 복사(Copy-Item)

<Parameters>
>> -Force : 기존 파일 덮어쓰기 (이미 있는 경우, 복사 실패)
>> -Recurse : 재귀 복사
>> -Filter : 필터 (예, -Filter *.txt : 모든 .txt 파일)

<PowerShell>
Copy-Item -Path C:\boot.ini -Destination C:\boot.bak

Copy-Item -Path C:\boot.ini -Destination C:\boot.bak -Force

Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination
C:\temp\text

파일 및 폴더 만들기(New-Item)

<Parameters>
-ItemType : 파일(File)/폴더(Directory) 유형

**********************************************
<PowerShell>
New-Item -Path 'C:\temp\New Folder' -ItemType Directory

New-Item -Path 'c:\temp\New Folder\file.txt' -ItemType File

폴더 내 모든 파일 및 폴더 제거

<Parameters>
>> -Recurse : 하위 모든 파일 제거 (미입력시 제거 확인을 위한 메시지 출력)

**********************************************
<PowerShell>
Remove-Item -Path C:\temp\DeleteMe

Remove-Item -Path C:\temp\DeleteMe -Recurse
profile
Hello, I am Heena :)

0개의 댓글