본문 바로가기
Windows

powershell 6, 7 버전 추가기능

by Rainbound-IT 2024. 12. 7.
반응형

 

6.xxx 버전

 

1. SSH 원격 실행 지원

SSH 지원은 PowerShell Core 6에서 가장 중요한 기능 중 하나로, 기존 Windows PowerShell의 WinRM(Remote Management) 의존성을 줄이고 Linux 및 macOS와의 호환성을 강화했습니다.

주요 특징:

  • SSH 프로토콜을 통한 원격 세션:
    PowerShell Core 6는 SSH를 통해 Enter-PSSession 및 Invoke-Command 명령으로 원격 서버에 접속하고 명령을 실행할 수 있습니다.
  • powershell
    코드 복사
    # SSH 원격 세션 열기 Enter-PSSession -HostName <RemoteServer> -UserName <Username> # 명령 실행 Invoke-Command -HostName <RemoteServer> -UserName <Username> -ScriptBlock { Get-Process }
  • 플랫폼 간 상호운용성:
    Windows, Linux, macOS 환경 간에 동일한 방식으로 원격 명령 실행 가능.
  • 보안:
    SSH 키 기반 인증, 암호 기반 인증 등 표준 SSH 보안 기능을 활용.

요구 사항:

  • 대상 시스템에 SSH 데몬(예: OpenSSH) 실행.
  • PowerShell Core 설치 및 환경 설정.

2. 새로운 API 추가

PowerShell Core 6는 .NET Core를 기반으로 하며, 기존 Windows PowerShell 대비 새로운 API와 기능이 추가되었습니다.

주요 API 변경 및 추가 기능:

  • 크로스 플랫폼 지원:
    .NET Core를 사용함으로써 다양한 운영체제에서 실행 가능.
    • 예: Linux 및 macOS에서 파일 시스템, 프로세스 관리, 네트워크 작업 API 지원.
  • 성능 최적화:
    • 새로운 ForEach-Object -Parallel 매개변수는 스크립트 작업을 병렬로 실행하여 성능을 개선했습니다.
    • JSON, XML 처리 속도 향상.
  • 새로운 명령어 및 Cmdlet:
    • Get-Error: 오류 처리 및 디버깅을 위한 명령어.
    • JSON, REST API와의 상호작용 강화:
      powershell
      코드 복사
      Invoke-RestMethod -Uri "https://api.example.com/data" -Method GET
    • SSH와 연계한 클라우드 리소스 관리.
  • .NET Core API 활용 가능:
    PowerShell Core 6의 스크립트에서 .NET Core API를 직접 호출하여 더 많은 기능을 구현 가능.
  • powershell
    코드 복사
    [System.IO.File]::WriteAllText("example.txt", "Hello, PowerShell Core!")

이점:

  • API 호출 및 네이티브 명령어 지원으로 더 넓은 자동화 및 관리 작업 가능.
  • 클라우드, 컨테이너, DevOps 환경에 적합한 확장성 제공.

3. 실용 예제

SSH 기반 원격 관리:

Linux 서버에서 PowerShell 스크립트를 실행:

powershell
코드 복사
Invoke-Command -HostName linux-server -UserName admin -ScriptBlock { sudo apt update && sudo apt upgrade -y }

REST API 호출 및 데이터 처리:

REST API를 호출하고 JSON 데이터를 처리:

powershell
코드 복사
$response = Invoke-RestMethod -Uri "https://api.example.com/data" $response.items | ForEach-Object { $_.name }

 

 

 


7.xxx 버전

 

1. ForEach-Object -Parallel: 병렬 작업 처리 지원

ForEach-Object cmdlet에 -Parallel 매개변수가 추가되어 여러 작업을 동시에 실행할 수 있습니다. 이는 대량 데이터 처리나 반복 작업의 성능을 크게 향상시킵니다.

주요 특징:

  • 병렬로 실행되는 작업의 개수를 -ThrottleLimit 매개변수로 제한 가능.
  • 각 작업은 격리된 스크립트 블록에서 실행됨.

예제:

powershell
코드 복사
1..10 | ForEach-Object -Parallel { Start-Sleep -Seconds $_ "작업 $_ 완료" } -ThrottleLimit 3
  • 이 코드는 숫자 1부터 10까지 병렬로 처리하며, 동시에 최대 3개의 작업이 실행됩니다.

2. Pipeline Chain Operators: ||와 &&로 조건부 파이프라인 지원

PowerShell 7에서는 파이프라인 작업에 조건부 논리 연산자를 추가하여 스크립트를 더 간단하고 읽기 쉽게 만듭니다.

작동 방식:

  • && (AND): 이전 명령이 성공하면 다음 명령을 실행.
  • || (OR): 이전 명령이 실패하면 다음 명령을 실행.

예제:

powershell
코드 복사
Test-Path "C:\파일.txt" && Write-Output "파일이 존재합니다." || Write-Output "파일이 존재하지 않습니다."
  • 만약 Test-Path가 성공(파일 존재)하면 "파일이 존재합니다."가 출력됩니다.
  • 실패(파일 없음) 시 "파일이 존재하지 않습니다."가 출력됩니다.

장점:

  • 복잡한 조건문(if-else)을 줄이고, 코드 간결성 향상.

3. ErrorView 개선: 오류 메시지 가독성 향상

PowerShell 7에서는 오류 메시지를 더 읽기 쉽게 출력할 수 있는 ErrorView 옵션을 도입했습니다.

옵션:

  • ConciseView (간결한 보기): 에러 메시지를 짧고 간결하게 출력.
  • NormalView: 기존과 같은 상세한 에러 메시지 출력.

예제:

powershell
코드 복사
$ErrorView = "ConciseView" Get-Item "C:\존재하지않는파일.txt"

출력:

mathematica
코드 복사
Get-Item: 경로 'C:\존재하지않는파일.txt'() 찾을 수 없습니다.

장점:

  • 에러 메시지가 간결하여 디버깅 시 집중하기 쉬움.
  • 필요에 따라 상세 정보 보기로 전환 가능.

4. 자동 업데이트 알림: 새 버전 릴리스 알림

PowerShell 7은 새로운 버전이 출시되면 이를 자동으로 알려줍니다.

작동 방식:

  • 새 PowerShell 세션을 열 때 업데이트가 있는지 확인.
  • 새 버전이 있으면 다음과 같은 메시지가 출력:
    scss
    코드 복사
    새 PowerShell 버전(7.x.x)이 사용 가능합니다.
  • 알림 끄기:
    powershell
    코드 복사
    $env:POWERSHELL_UPDATECHECK = 'Off'

5. Azure 및 Docker 통합 모듈 지원 강화

PowerShell 7은 Azure 및 Docker와의 연동을 쉽게 하기 위해 통합 모듈을 제공하며, DevOps 환경에서 특히 유용합니다.

Azure와의 통합:

  • Az 모듈: Azure 리소스(VM, 스토리지, 네트워크 등)를 관리하는 명령어 모음.
    powershell
    코드 복사
    Connect-AzAccount Get-AzResourceGroup

Docker와의 통합:

  • Docker 컨테이너 관리 명령어 지원.
    powershell
    코드 복사
    # 모든 Docker 컨테이너 보기 Get-Container

장점:

  • 클라우드와 컨테이너 작업을 단일 스크립트 환경에서 처리 가능.
  • DevOps 및 IT 관리 워크플로를 단순화.
반응형

댓글