본문 바로가기
목차
utils/cmd and powershell

Windows PowerShell 명령어 (기본): PowerShell 5.x

by ds31x 2025. 12. 31.
728x90
반응형

5.x 라고 했으나, MS사가 Windows PowerShell의 버전을 5.1로 동결하고
이후의 버전( 6+)은 PowerShell (현재의 Major version은 7임)로 분리한 상태임.

  • 실행파일도 powershell.exe 와 pwsh.exe 로 완전히 다름.

 

기능 개선이 되어야 minor version이 올라가는데, Windows버전 향상이나 보안패치에 따른 micro-version(or patch) 증가만 이루어지게 됨: 즉, Windows PowerShell은 5.1 이 고정이라고 보면 된다.

 

Windows PowerShell은 
기능 개발 관점에서는 EOL (End Of Life) 상태이나
Windows OS의 구성요소라
Retired는 아닌 상태임. 

 

스샷은 PowerShell 5.1 (Win11)에 Oh-My-Posh를 사용한 Windows Terminal에서 이루어짐:

semantic versioning에 대해선 다음을 참고:


man

  • get-help의 alias
  • 도움말. Linux의 man과 유사.
  • 알고자 하는 명령어를 다음 인자로 넘겨주면 됨.

설명에 영양가 있는 내용이 없는 이유는 도움말을 로컬 장비에서 업데이트를 하기 전이라서임. update-help 를 사용하면 되야하는데... MS사가 방치해놓은 문제 때문에 업데이트가 잘 안됨. 다음의 명령어 사용 권장: Update-Help -Verbose -Force -ErrorAction SilentlyContinue

 


pwd

  • get-location의 alias
  • Print Working Directory, present working directory
  • 현재 작업 디렉토리의 path(경로)를 출력함

 


clear

  • clear-host의 alias
  • 현재 화면을 지움. cmd의 cls와 유사함.

ls

  • get-childitem의 alias
    • get-childitem 은 기본으로 "현재 디렉토리의 바로 밑의 항목" 만을 보여줌.
    • get-childitem 은 Linux에서 자주 사용되는 find 의 역할도 가능하며 이는 ls 일 때와 달리 기본으로 재귀적으로 동작함.
  • list
  • 현재 경로에 있는 파일과 디렉토리를 보여줌.
  • 뒤에 인자로 보고자 하는 디렉토리의  path를 인자로 넘겨주면 해당 디렉토리에 대해 보여줌.
  • linux의 ls와 유사하나, option이 다름.

옵션

  • -name : 경로에 있는 파일과 디렉토리의 이름만 보여줌.
  • -file : 경로에 있는 파일만 보여줌.
  • -directory : 경로에 있는 디렉토리만 보여줌.
  • -filter : 정규표현식 지원함.
  • -force : 숨김파일까지 보여줌.

get-childitem: 

get-childitem에 대해서 자세한 건 다음을 참고:

2026.01.03 - [utils/cmd and powershell] - get-childitem : find 의 powershell 버전

 

get-childitem : find 의 powershell 버전

Get-ChildItem (Linux find 의 PowerShell 버전)PowerShell에서 파일 시스템을 재귀적으로 탐색하며 조건에 맞는 항목을 찾는(find) 핵심 cmdlet.list ls라는 alias를 가지고 있음: 이 경우 -recurse라는 옵션이 빠져서

ds31x.tistory.com

 


cat

  • get-content의 alias
  • text 파일등의 내용 출력에 사용됨.

Windows PowerShell은 utf-16le를 기본 encoding으로 삼고 있기 때문에,

utf-8로 인코딩 된 파일을 읽는 경우는 다음과 같이 -encoding utf8을 지정해줘야 함.

 


cp

  • copy-item의 alias
  • copy
  • file이나 directory를 복사함.

비어있지 않은 디렉토리를 복사하는 경우엔 -recuse 옵션이 있어야 동작함.

숨김파일이나 읽기 전용 파일을 포함하여 복사하려면 -force 옵션이 필요.

symbolic link를 원본으로 대체하여 복사하려면 -FollowSymlink 옵션을 사용 (안전하게 백업하려면)


rm

  • remove-item의 alias
  • remove
  • 뒤에 인자로 넘겨지는 경로의 파일을 삭제.
    • linux에선 -r 옵션을 주면 내부에 파일이나 서브디렉토리를 가지고 있는 디렉토리도 삭제 가능함.
    • Windows PowerShell에선 디렉토리를 제거할 경우, 하위항목을 지울지를 물어봄.

 

만약 디렉토리를 rm으로 삭제-recurse 옵션을 추가할 경우엔 하위항목을 재귀적으로 지우겠다는 뜻이므로 물어보지 않고 삭제함.

600

 


mv

  • move-item의 alias
  • file이나 directory를 이동시키거나 새로운 이름으로 변경.

cd

  • set-location 의 alias
  • change directory
  • 뒤에 인자로 넘겨진 path로 이동함.


mkdir 

  • new-item의 alias: 정확히는 new-item -itemtype Directory 의 alias임.
  • mak directory.
  • 뒤에 넘겨지는 인자에 해당하는 디렉토리 생성.
    • Linux 등 Unix 계열 환경에서는 -p 옵션을 지정해야
      존재하지 않는 상위 디렉토리까지 함께 생성할 수 있음.
    • 반면 PowerShell에서는 별도의 -p 옵션을 지정하지 않아도,
      지정한 경로에 포함된 모든 상위 디렉토리를 자동으로 생성함.


rmdir

  • remove-item 의 alias
  • 뒤에 넘겨지는 인자에 해당하는 디렉토리 삭제.

 

만약, 지우고자 하는 directory 안에 파일이 있는 경우엔 하위항목을 지울지 등에 대해 물어본다: 이게 싫으면 -recurse 옵션을 이용.
(rm 과 같이 remove-item이기 때문임)


get-command 

  • cmd의 where, linux shell의 which에 해당함.
  • 뒤에 인자로 주어지는 명령어의 위치를 보여줌.


new-item

  • linux의 touch 와 유사함.
  • 뒤에 인자로 넘겨진 path에 empty file을 생성함.
  • 디렉토리 생성에도 사용가능함: -itemtype Directory 를 인자로 넘겨주면 됨.

echo

  • write-output 의 alias
  • 뒤에 인자로 주어진 문자열을 stdout으로 출력.
  • redirct >>> 를 사용하면 새로운 파일을 만들면서 내용도 추가해 줄 수 있음.


select-string - grep의 PowerShell 버전

  • 텍스트에서 문자열 패턴을 검색하는 PowerShell cmdlet임. 
  • cmd의 findstr, Linux 의 grep에 해당함. 
  • 파일을 직접 읽어 검색할 수도 있고,
  • Get-Content, Get-Process 등에서 파이프로 전달된 텍스트 스트림을 대상으로 검색할 수도 있음.

검색 결과는 단순 문자열이 아니라 매치 정보가 포함된 객체로 반환된다는 점이 핵심적인 특징임.

Select-String [-Path] <파일경로> -Pattern <문자열 또는 정규식>
  • -Pattern은 찾고자 하는 문자열(또는 정규식)을 의미하며,
  • -Path는 검색 대상 파일 또는 파일 목록을 지정함.

간단한 예는 다음과 같음:

# error라는 문자열이 포함된 줄 검색
Select-String -Path app.log -Pattern "error"

# 정규식으로 숫자 3자리 검색
Select-String -Path data.txt -Pattern '\d{3}'

# 대소문자 구분 없이 TODO 검색
Select-String *.ps1 -Pattern 'todo'

# 특정 패턴이 없는 줄만 출력
Select-String config.ini -Pattern '^#' -NotMatch

출력결과가 객체이므로 다음의 후처리가 가능

Select-String은 단순 문자열이 아니라 다음 정보를 포함한 객체를 반환함.

  • 파일 경로 (Path)
  • 줄 번호 (LineNumber)
  • 실제 텍스트 (Line)
  • 매치 정보 (Matches)

따라서 다음과 같이 반환된 결과 객체에 대해 후처리가 가능함.

Select-String "error" log.txt | Select-Object LineNumber, Line

자주 쓰는 옵션

-Pattern (검색 패턴)

Select-String -Pattern "error" -Path log.txt
  • 검색할 문자열 또는 정규식을 지정함.
  • PowerShell의 정규식 엔진을 사용하므로 ^, $, .* 같은 패턴도 사용 가능함.

-Path (검색 대상 파일)

Select-String -Pattern "TODO" -Path *.py
  • 검색할 파일을 지정함.
  • 와일드카드(*, ?) 사용이 가능하여 여러 파일을 한 번에 검색할 수 있음.

-CaseSensitive (대소문자 구분)

Select-String -Pattern "Error" -Path log.txt -CaseSensitive
  • 기본적으로 Select-String은 대소문자를 구분하지 않음.
  • 이 옵션을 지정하면 정확히 일치하는 대소문자만 검색함.

-NotMatch (패턴을 포함하지 않는 줄 검색)

Select-String -Pattern "^#" -Path script.ps1 -NotMatch
  • 패턴에 일치하지 않는 줄만 반환함.
  • 주석이 아닌 코드 줄만 추려낼 때 자주 사용됨.

-SimpleMatch (정규식 비활성화)

Select-String -Pattern "." -Path file.txt -SimpleMatch
  • 기본적으로 -Pattern은 정규식으로 해석됨.
  • -SimpleMatch를 사용하면 정규식이 아닌 순수 문자열 비교로 동작함.

-Context (앞뒤 줄 함께 출력)

Select-String -Pattern "Exception" -Path app.log -Context 2,3
  • 매칭된 줄의 앞 2줄, 뒤 3줄을 함께 출력함.
  • 로그 분석 시 원인 파악에 매우 유용함.

파이프라인과 함께 사용

Get-Content log.txt | Select-String "error"
  • Get-Content로 읽은 텍스트 스트림을 받아 검색함.
    Linux의 cat log.txt | grep error와 동일한 개념임.

clipboard와 함께 사용: Set-Clipboard, Get-Clipboard

set-clipboard : Set-Clipboard는 파이프라인으로 전달된 객체 또는 -Value로 지정된 값을 Windows 클립보드에 복사하는 cmdlet.

get-clipboard : Windows 클립보드에 저장된 내용을 PowerShell에서 문자열(또는 Raw 데이터)로 반환하는 cmdlet.

2025.12.29 - [shell] - iconv, clip.exe, pbcopy, xclip

 

iconv, clip.exe, pbcopy, xclip

iconviconv는 Linux(및 유닉스 계열 시스템)에서 텍스트를 한 문자 인코딩에서 다른 문자 인코딩으로 변환하는 표준 유틸리티임.Converts text from one encoding to another encoding. 참고로 iconv는 Windows 네이티브

ds31x.tistory.com


Environment Variable (환경변수 설정)

주로 $env:변수명=변수값 을 이용한다.

다음 URL에서 PowerShell 관련 내용을 참고할 것: 2023.06.20 - [개발환경] - [Env] Environment Variable (환경변수)

 

[Env] Environment Variable (환경변수)

정의Environment variable (환경변수) 란,OS나 SW에서 참조하는 변수들로OS나 SW가 동작 (or 실행)에 영향을 주는 값을 가짐.shell script 나 software들이 각 장비의 환경에 맞게 동작할 수 있도록 해 줌.종류Envr

ds31x.tistory.com

 


같이보면 좋은 자료들

2023.06.28 - [개발환경] - [Env] PowerShell v7.3.5

 

[Env] PowerShell v7.3.5

잡담wsl을 사용하면서 powershell을 쓸 일이 많이 줄었지만... 그래도 간간히 필요하고, 아예 손을 놔버리면 그나마 익숙치 않은데 더 안 좋아지는 터라...노트북의 powershell을 업데이트했다. 주의할

ds31x.tistory.com

2025.12.31 - [shell] - PowerShell의 초기화-profile

 

PowerShell의 초기화-profile

PowerShell의 profile이란?PowerShell의 profile은셸이 시작될 때 자동으로 실행되어환경 변수, alias, 함수, 초기화 코드 등을 설정하는시작 스크립트(확장자 .ps1 파일).PowerShell은 상황에 따라 서로 다른 prof

ds31x.tistory.com

update-help 문제점 해결방법: icantevenplop 님의 글을 참고(2026.1 현재 6년전 글임...)

https://www.reddit.com/r/PowerShell/comments/fcjkip/multiple_years_of_microsofts_broken_powershell/?tl=ko

 

Reddit의 PowerShell 커뮤니티: Microsoft의 깨진 PowerShell 모듈 HelpInfoURI 및 Update-Help의 여러 해

PowerShell 커뮤니티에서 이 게시물을 비롯한 다양한 콘텐츠를 살펴보세요

www.reddit.com


2024.05.20 - [utils/cmd and powershell] - [cmd] command prompt 연습하기 (file, dir 사용하기)

 

[cmd] command prompt 연습하기 (file, dir 사용하기)

CMD 프롬프트 기초 튜토리얼: 파일 및 디렉토리 다루기1. CMD 프롬프트 열기Windows 키 + R을 눌러 실행 창을 엽니다.cmd를 입력하고 Enter를 누릅니다.기본적으로 현재 User의 home 디렉토리를 cwd (current wo

ds31x.tistory.com

2024.05.20 - [shell] - [Bash] File과 directory 관련 command

 

[Bash] File과 directory 관련 command

Bash에서 파일과 디렉토리 관련 명령어 튜토리얼이 문서는 비어있는 디렉토리에서 시작하여 파일과 디렉토리를 생성하고, 삭제하는 과정을 단계별로 설명하는 일종의 튜토리얼임. terminal에서 각

ds31x.tistory.com

 


 

 

 

728x90