Computer >> 컴퓨터 >  >> 소프트웨어 >> 소프트웨어

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

누구나 마법사처럼 몇 마디 주문만으로 원하는 일을 척척 해내는 상상을 해봤을 것입니다. 마법사가 되는 법은 알려드릴 수 없지만, 컴퓨터로 '마법'을 부리는 법은 알려드릴 수 있습니다.

Windows 7이 설치된 컴퓨터를 사용 중이라면 이미 PowerShell이 설치되어 있습니다. 참고로 Windows 7은 보안 업데이트가 종료되었으니, 안전을 위해 최신 버전의 Windows로 업그레이드하시길 권장합니다.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

이 글은 Windows 사용자만을 위한 것이 아닙니다. 최신 버전의 PowerShell은 무료로 제공되며, macOS와 Linux에도 설치해 사용할 수 있습니다. 즉, 한 번 배워두면 거의 모든 컴퓨터에서 활용할 수 있는 기술입니다. 이 기술을 더 깊이 파고들어 IT 분야로 진로를 확장할 수도 있습니다.

PowerShell이란 무엇인가?

마이크로소프트의 공식 정의는 "시스템 관리자를 위해 특별히 설계된 명령줄 셸"입니다. 어렵게 들리지만, 사실 여러분이 바로 가정의 '시스템 관리자'입니다. 자신의 컴퓨터를 관리하고, 클릭과 키보드 입력으로 명령을 내리니까요. 명령줄 셸은 그저 마우스 대신 텍스트 명령을 입력해 컴퓨터에게 일을 시키는 또 다른 창일 뿐입니다. 충분히 할 수 있습니다.

PowerShell은 프로그래밍 언어와 비슷하지만, 훨씬 직관적입니다. 일반 영어 문장처럼 읽히도록 설계되어 비프로그래머도 쉽게 익힐 수 있습니다. 몇 줄의 명령(스크립트)을 작성해 Windows가 원하는 작업을 수행하게 하고, 이를 파일로 저장해 클릭 한 번으로 실행하거나 예약 실행할 수 있습니다.

PowerShell로 무엇을 할 수 있을까?

PowerShell의 핵심은 반복적인 작업을 자동화해 소중한 시간을 아끼는 것입니다. 전문 시스템 관리자에게는 사용자 계정 생성, 비밀번호 발급, 상세 정보 이메일 발송 등이 해당됩니다. 수동으로 하면 5분에서 1시간 이상 걸리는 일도, 적절한 스크립트만 있다면 관리자 개입 없이 순식간에 끝낼 수 있습니다.

가정에서는 어떤 일에 쓸 수 있을까요? 하기 싫은 반복 작업 거의 모두에 활용할 수 있습니다.

  • 불필요한 임시 파일과 로그 파일을 삭제해 하드디스크 공간 확보
  • 자녀 컴퓨터 사용 시간 제한(통금) 설정
  • 대량의 파일 이름 변경이나 정리

컴퓨터로 할 수 있는 거의 모든 작업을 PowerShell 스크립트로 자동화해, 클릭 한 번이나 예약 실행으로 처리할 수 있습니다.

PowerShell, 어떻게 시작하나요?

PowerShell을 다루기 가장 좋은 도구는 PowerShell ISE(통합 스크립팅 환경)입니다. Windows 10 기준 시작 메뉴에서 "powershell ise"를 검색하면 찾을 수 있습니다.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

관리자 권한으로 실행하기

처음 사용할 때는 반드시 관리자 권한으로 실행해야 합니다. 컴퓨터의 관리자 권한이 필요합니다. 시작 메뉴에서 PowerShell ISE마우스 오른쪽 버튼으로 클릭 → "관리자 권한으로 실행"을 선택하세요.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

사용자 계정 컨트롤(UAC) 경고창이 뜨면 "예"를 누르세요.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

ISE 화면 구성 이해하기

PowerShell ISE 창은 세 영역으로 나뉩니다.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법
  1. 상단(스크립트 창): 스크립트를 작성하고 편집하는 곳입니다.
  2. 하단(콘솔 창): 스크립트 실행 결과, 출력 메시지, 오류 메시지가 나타납니다. 디버깅에 필수적입니다.
  3. 우측(명령어 추가 기능): 사용 가능한 모든 PowerShell 명령어(cmdlet) 사전입니다. 모르는 명령어를 찾아보기에 좋습니다.

스크립트 실행 정책 변경하기

기본적으로 PowerShell은 Windows 기본 스크립트 외에는 실행을 차단합니다. 직접 작성한 스크립트를 실행하려면 정책을 바꿔야 합니다. 스크립트 창에 다음 명령을 복사해 붙여넣으세요.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Set-ExecutionPolicy 부분이 cmdlet(명령렛, '커맨드렛' 발음)입니다. cmdlet은 복잡한 시스템 작업을 짧은 명령 하나로 수행하게 해주는 강력한 도구입니다. 아이에게 "방 청소해"라고 말하면, 잘 훈련된 아이는 이불 개기, 빨래 넣기, 장난감 정리, 청소기 돌리기까지 알아서 척척 해냅니다. '방 청소'라는 하나의 cmdlet이 그 모든 세부 동작을 내포하고 있는 셈입니다.

창 상단의 녹색 재생 버튼(▶)을 눌러 명령을 실행하세요.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

-ExecutionPolicy는 정책 종류를 지정하는 매개변수(Parameter)입니다. RemoteSigned 정책은 "인터넷에서 다운로드한 스크립트는 신뢰할 수 있는 발행자의 서명이 있어야 실행하고, 내 컴퓨터에서 직접 만든 로컬 스크립트는 서명 없이도 실행 허용하라"는 의미입니다. 이제 내 스크립트를 자유롭게 실행할 수 있습니다.

실전 예제: PowerShell로 하드디스크 공간 확보하기

임시 파일을 삭제하는 스크립트를 줄 단위로 분석해 보겠습니다. CCleaner 같은 전문 도구만큼 강력하진 않지만, 광고나 부가 프로그램 설치 같은 부작용 없이 가볍게 쓰기 좋습니다. 마지막에 전체 코드를 제공하니 복사해 사용하세요.

1단계: 대상 폴더 경로 변수에 저장

$TempFileLocation = "C:\Users\username\AppData\Local\Temp\*"

$ 기호로 시작하는 것은 변수(Variable)입니다. 값을 담아두는 '지갑' 같은 것입니다. $TempFileLocation이라는 지갑에 임시 파일 폴더 경로를 넣습니다. username 부분은 본인의 Windows 로그인 사용자 이름으로 바꿔야 합니다. 끝의 별표(*)는 와일드카드로, Temp 폴더 안의 모든 파일을 뜻합니다. 큰따옴표는 이 값이 문자열(String)임을 알리는 역할을 합니다.

2단계: 폴더 안의 모든 파일 정보 가져오기

$TempFile = Get-ChildItem $TempFileLocation -Recurse

Get-ChildItem cmdlet은 '자식 항목 가져오기'라는 뜻으로, 폴더(부모) 안의 파일(자식) 목록을 가져옵니다. -Recurse 매개변수는 하위 폴더 안까지 깊숙이 들어가 모든 파일을 찾아오라는 의미입니다. 결과를 $TempFile 변수에 저장합니다.

3단계: 파일 개수 세기

$TempFileCount = ($TempFile).count

.count 속성으로 파일 개수를 세어 $TempFileCount에 저장합니다. 몇 개의 파일이 지워질지 미리 알 수 있어 편리합니다.

4단계: 조건문으로 분기 처리

if($TempFileCount -eq 0)

if 조건문입니다. 괄호 안 조건이 참이면 중괄호 { } 안의 코드를 실행합니다. -eq는 '같다(equal)'를 뜻하는 비교 연산자입니다. "파일 개수가 0개라면"이라는 조건입니다.

5단계: 파일이 없을 때 메시지 출력

{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}

파일이 없으면 초록색 글자로 "삭제할 파일이 없습니다"라는 메시지를 화면(Host)에 출력합니다. 에러 메시지(빨간색)와 구별하기 위함입니다.

6단계: 파일이 있을 때 삭제 실행 (Else 블록)

Else {$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}
  • | (파이프): 왼쪽 명령의 결과($TempFile)를 오른쪽 명령(Remove-Item)의 입력으로 흘려보냅니다. 수도관처럼 데이터를 연결합니다.
  • Remove-Item: 항목을 삭제하는 cmdlet입니다.
  • -WhatIf: 가장 중요한 안전장치입니다. 실제 삭제는 하지 않고 "만약 실행한다면 어떤 파일이 지워질지" 시뮬레이션만 보여줍니다. 스크립트가 의도대로 작동하는지 확인할 때까지 이 옵션을 유지하세요.
  • -Confirm:$false: 삭제 전 확인 팝업을 띄우지 않습니다.
  • -Force: 읽기 전용 파일 등도 강제로 삭제합니다.
  • -WarningAction SilentlyContinue, -ErrorAction SilentlyContinue: 경고나 에러가 발생해도 중단하지 않고 조용히 계속 진행합니다.
가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

7단계: 완료 메시지 출력

Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green

작업 완료 후 몇 개의 파일을 어디서 지웠는지 초록색으로 알려줍니다.

전체 스크립트 코드

$TempFileLocation = "C:\Users\사용자이름\AppData\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count

if($TempFileCount -eq 0) {
    Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green
}
Else {
    $TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
    Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}

위 코드를 ISE 스크립트 창에 붙여넣고 "삭제-임시파일.ps1" 같은 이름으로 저장하세요(cmdlet 명명 규칙인 '동사-명사' 형식을 따르는 것이 좋습니다). 코드 내 사용자이름을 본인 계정명으로 반드시 수정하세요.

실행하려면 탐색기에서 .ps1 파일을 마우스 오른쪽 클릭 → "PowerShell로 실행"을 선택하면 됩니다. 콘솔 창이 잠시 떴다 사라지며 작업이 수행됩니다.

가정 사용자를 위한 PowerShell 입문 가이드: 컴퓨터 자동화의 마법

중요: 테스트가 끝났다면 -WhatIf 매개변수를 지워야 실제 파일이 삭제됩니다. 지우기 전에는 절대 파일이 지워지지 않으니 안심하고 테스트하세요.

더 깊이 배우고 싶다면

첫 스크립트치곤 꽤 긴 여정이었습니다. 여기까지 오셨다면 스스로를 칭찬해 주세요! PowerShell의 기초를 다지셨습니다. 더 배우고 싶다면 다음 자료들을 추천합니다.

이제 여러분도 컴퓨터 마법사의 첫 걸음을 떼셨습니다. 즐거운 자동화 생활 되시길 바랍니다!