liminfo

PowerShell Reference

PowerShell 스크립팅 레퍼런스

42개 결과

PowerShell Reference 소개

PowerShell 레퍼런스는 PowerShell 스크립팅과 시스템 관리의 모든 핵심 측면을 다루는 포괄적이고 검색 가능한 가이드입니다. 기본문법(변수, 배열, 해시테이블, 조건문, 반복문, 비교/논리 연산자), cmdlet(Get-Process, Get-Service, Get-ChildItem, Get-Content, Select-Object, Where-Object), 변수(환경 변수, 타입 캐스팅, $_, $null, $PSVersionTable 등 특수 변수), 파이프라인(|, ForEach-Object, Sort-Object, Measure-Object, Group-Object, Export-Csv), 함수(함수 정의, param() 블록, CmdletBinding, begin/process/end), 모듈, 원격, 객체 등 8개 카테고리로 구성됩니다.

Windows 시스템 관리자, DevOps 엔지니어, 클라우드 엔지니어들이 Windows 관리 작업 자동화, Az 모듈을 통한 Azure 인프라 관리, CI/CD 파이프라인 구축, API나 로그 파일의 구조화 데이터 처리에 이 레퍼런스를 활용합니다. PowerShell의 객체 기반 파이프라인 — cmdlet이 텍스트가 아닌 .NET 객체를 전달하는 방식 — 은 문자열 파싱 없이도 강력한 데이터 변환을 가능하게 합니다.

이 레퍼런스는 Windows PowerShell 5.1과 PowerShell 7+(크로스플랫폼)를 모두 다룹니다. 각 항목에는 전체 구문과 매개변수 예제, CPU 사용량으로 프로세스 필터링, 서비스 상태를 CSV로 내보내기, 여러 원격 서버에서 명령 실행, API 소비를 위해 데이터를 JSON으로 직렬화하는 등 실제 상황에서의 코드 스니펫이 포함됩니다.

주요 기능

  • 기본 문법: 변수 할당, @() 배열, @{} 해시테이블, if/elseif/else, switch, for/foreach/while
  • 비교 연산자: -eq, -ne, -gt, -lt, -ge, -le; 논리 연산자: -and, -or, -not
  • 핵심 cmdlet: Get-Process, Get-Service, Get-ChildItem, Get-Content, Set-Content, Select-Object, Where-Object
  • 파이프라인 연산자: |, ForEach-Object, Sort-Object, Measure-Object, Group-Object, Export-Csv/Import-Csv
  • 함수 작성: param() 블록, [CmdletBinding()], Mandatory 매개변수, begin/process/end 파이프라인 지원
  • 모듈 관리: Get-Module, Import-Module, PSGallery에서 Install-Module, New-ModuleManifest
  • PowerShell Remoting: Enter-PSSession, Invoke-Command(멀티 서버), New-PSSession, Copy-Item -ToSession
  • 객체 조작: [PSCustomObject], Get-Member, Format-Table, ConvertTo-Json/ConvertFrom-Json, Add-Member

자주 묻는 질문

PowerShell이란 무엇이고 명령 프롬프트(cmd)와 어떻게 다른가요?

PowerShell은 .NET 위에 구축된 객체 지향 셸 및 스크립팅 언어입니다. 텍스트를 전달하는 cmd와 달리 PowerShell은 파이프라인을 통해 구조화된 .NET 객체를 전달하여 문자열 파싱 없이 강력한 데이터 조작이 가능합니다. PowerShell 7+는 크로스플랫폼(Windows, Linux, macOS)이며 Windows PowerShell 5.1은 Windows 전용입니다.

PowerShell에서 $_ 변수는 무엇인가요?

$_($PSItem이라고도 씀)는 파이프라인의 현재 객체를 나타냅니다. Where-Object, ForEach-Object 등의 cmdlet에 전달되는 스크립트 블록에서 사용됩니다. 예: `Get-Process | Where-Object { $_.CPU -gt 100 }`은 CPU 속성이 100을 초과하는 프로세스를 필터링합니다.

PowerShell 파이프라인에서 객체를 필터링하는 방법은?

Where-Object에 스크립트 블록을 사용합니다: `Get-Service | Where-Object { $_.Status -eq "Running" }`. PowerShell 3.0 이상에서는 간소화된 구문도 사용 가능합니다: `Get-Service | Where-Object Status -eq "Running"`. 대용량 데이터셋에서는 성능을 위해 파이프라인 초반에 -Filter 같은 cmdlet 전용 매개변수로 필터링하세요.

PowerShell에서 커스텀 객체를 생성하는 방법은?

[PSCustomObject]와 해시테이블 리터럴을 사용합니다: `$obj = [PSCustomObject]@{ Name = "Server01"; IP = "192.168.1.1"; Status = "Online" }`. 이후에 Add-Member로 속성을 추가할 수 있습니다: `$obj | Add-Member -MemberType NoteProperty -Name "Region" -Value "KR"`. `$obj | Format-Table`로 테이블 형태로 표시합니다.

여러 원격 서버에서 PowerShell 명령을 실행하는 방법은?

Invoke-Command에 -ComputerName을 사용합니다: `Invoke-Command -ComputerName Server01, Server02 -ScriptBlock { Get-Service | Where-Object { $_.Status -eq "Running" } }`. 동일 서버에서 반복 작업 시에는 New-PSSession으로 영구 세션을 생성하고 -Session으로 재사용하면 매번 새 연결을 만드는 오버헤드를 줄일 수 있습니다.

PSGallery에서 PowerShell 모듈을 설치하는 방법은?

`Install-Module -Name 모듈명 -Scope CurrentUser -Force`를 실행합니다. 주요 모듈로는 Az(Azure), AWS.Tools.*(AWS), SqlServer, ImportExcel이 있습니다. `Find-Module -Name "Az*"`로 모듈을 검색하세요. 필요시 실행 정책을 설정합니다: `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`.

PowerShell에서 파일을 읽고 쓰는 방법은?

Get-Content로 읽습니다: `Get-Content -Path "file.txt"` 또는 마지막 50줄은 `Get-Content -Path "app.log" -Tail 50`. 쓰기는 Set-Content(덮어쓰기) 또는 Add-Content(추가)를 사용합니다. 구조화 데이터는 CSV에 Import-Csv/Export-Csv를, JSON에 ConvertFrom-Json/ConvertTo-Json을 사용하세요.

[CmdletBinding()]과 일반 함수의 차이는?

[CmdletBinding()]은 함수를 "고급 함수"로 변환하여 -Verbose, -Debug, -ErrorAction, -WhatIf 같은 공통 매개변수를 지원하게 합니다. 또한 [Parameter(Mandatory=$true)], [ValidateSet()], [ValidateRange()] 같은 매개변수 유효성 검사 특성을 사용할 수 있게 합니다. 재사용이나 모듈 배포를 위한 함수에는 이 특성을 사용하세요.