다음을 통해 공유


Windows PowerShell 5.1에서 PowerShell 7로 마이그레이션

클라우드, 온-프레미스 및 하이브리드 환경을 위해 설계된 PowerShell 7은 향상된 기능과새로운 기능으로 가득합니다.

  • Windows PowerShell과 함께 설치 및 실행
  • 기존 Windows PowerShell 모듈과의 호환성 향상
  • 삼항 연산자 및 ForEach-Object -Parallel 같은 새로운 언어 기능
  • 향상된 성능
  • SSH 기반 원격
  • 플랫폼 간 상호 운용성
  • Docker 컨테이너 지원

PowerShell 7은 Windows PowerShell과 함께 작동하여 배포 전에 버전을 쉽게 테스트하고 비교할 수 있습니다. 마이그레이션은 간단하고 빠르며 안전합니다.

PowerShell 7은 다음 Windows 운영 체제에서 지원됩니다.

  • Windows 10 및 11
  • Windows Server 2016, 2019 및 2022

PowerShell 7은 macOS 및 여러 Linux 배포판에서도 실행됩니다. 지원되는 운영 체제 목록 및 지원 수명 주기에 대한 자세한 내용은 PowerShell 지원 수명 주기참조하세요.

PowerShell 7 설치

유연성과 IT, DevOps 엔지니어 및 개발자의 요구를 지원하기 위해 PowerShell 7을 설치하는 데 사용할 수 있는 몇 가지 옵션이 있습니다. 대부분의 경우 설치 옵션을 다음 방법으로 줄일 수 있습니다.

메모

MSI 패키지를 배포하고 Microsoft Configuration Manager같은 관리 제품으로 업데이트할 수 있습니다. GitHub 릴리스 페이지패키지를 다운로드합니다.

MSI 패키지를 배포하려면 관리자 권한이 필요합니다. ZIP 패키지는 모든 사용자가 배포할 수 있습니다. ZIP 패키지는 전체 설치를 커밋하기 전에 테스트를 위해 PowerShell 7을 설치하는 가장 쉬운 방법입니다.

Windows 스토어 또는 winget통해 PowerShell 7을 설치할 수도 있습니다. 이러한 두 가지 방법에 대한 자세한 내용은 WindowsPowerShell 설치 자세한 지침을 참조하세요.

Windows PowerShell 5.1과 함께 PowerShell 7 사용

PowerShell 7은 Windows PowerShell 5.1과 공존하도록 설계되었습니다. 다음 기능은 PowerShell에 대한 투자가 보호되고 PowerShell 7로의 마이그레이션이 간단하도록 합니다.

  • 별도의 설치 경로 및 실행 파일 이름
  • 별도의 PSModulePath
  • 각 버전에 대한 개별 프로필
  • 향상된 모듈 호환성
  • 새 원격 제어 엔드포인트
  • 그룹 정책 지원
  • 이벤트 로그 분리

.NET 버전의 차이점

PowerShell 7.4는 .NET 8.0을 기반으로 합니다. Windows PowerShell 5.1은 .NET Framework 4.x를 기반으로 합니다. .NET 버전 간의 차이는 특히 .NET 메서드를 직접 호출하는 경우 스크립트의 동작에 영향을 줄 수 있습니다. 자세한 내용을 보려면 Windows PowerShell 5.1과 PowerShell 7.x의 차이점을 참조하십시오.

별도의 설치 경로 및 실행 파일 이름

PowerShell 7은 새 디렉터리에 설치되어 Windows PowerShell 5.1에서 병렬 실행을 사용하도록 설정합니다.

버전별 설치 위치:

  • Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell 6.x: $env:ProgramFiles\PowerShell\6
  • PowerShell 7: $env:ProgramFiles\PowerShell\7

새 위치가 PATH에 추가되어 Windows PowerShell 5.1 및 PowerShell 7을 모두 실행할 수 있습니다. PowerShell 6.x에서 PowerShell 7로 마이그레이션하는 경우 PowerShell 6이 제거되고 PATH가 대체됩니다.

Windows PowerShell에서 PowerShell 실행 파일의 이름은 powershell.exe. 버전 6 이상에서 실행 파일의 이름은 pwsh.exe. 새 이름을 사용하면 두 버전의 병렬 실행을 쉽게 지원할 수 있습니다.

별도의 PSModulePath

기본적으로 Windows PowerShell 및 PowerShell 7은 모듈을 다른 위치에 저장합니다. PowerShell 7은 이러한 위치를 $Env:PSModulePath 환경 변수에 결합합니다. 이름으로 모듈을 가져올 때, PowerShell은 $Env:PSModulePath에 지정된 위치를 확인합니다. 이를 통해 PowerShell 7은 코어 모듈과 데스크톱 모듈을 모두 로드할 수 있습니다.

설치 범위 Windows PowerShell 5.1 PowerShell 7.0
PowerShell 모듈 $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $env:ProgramFiles\PowerShell\7\Modules
사용자가 설치됨
AllUsers 범위
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
사용자가 설치됨
현재 사용자 범위
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

다음 예제에서는 각 버전에 대한 $Env:PSModulePath 기본값을 보여 줍니다.

  • Windows PowerShell 5.1의 경우:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\WindowsPowerShell\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    
  • PowerShell 7의 경우:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\PowerShell\Modules
    C:\Program Files\PowerShell\Modules
    C:\Program Files\PowerShell\7\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    

PowerShell 7에는 모듈의 자동 로드를 제공하는 Windows PowerShell 경로 및 PowerShell 7 경로가 포함되어 있습니다.

메모

PSModulePath 환경 변수 또는 설치된 사용자 지정 모듈 또는 애플리케이션을 변경한 경우 추가 경로가 있을 수 있습니다.

자세한 내용은 about_PSModulePath참조하세요.

모듈에 대한 자세한 내용은 about_Modules참조하세요.

개별 프로필

PowerShell 프로필은 PowerShell이 시작될 때 실행되는 스크립트입니다. 이 스크립트는 명령, 별칭, 함수, 변수, 모듈 및 PowerShell 드라이브를 추가하여 환경을 사용자 지정합니다. 프로필 스크립트를 사용하면 수동으로 다시 만들지 않고도 모든 세션에서 이러한 사용자 지정을 사용할 수 있습니다.

PowerShell 7에서 프로필 위치의 경로가 변경되었습니다.

  • Windows PowerShell 5.1에서 프로필의 위치는 $HOME\Documents\WindowsPowerShell.
  • PowerShell 7에서 프로필의 위치는 $HOME\Documents\PowerShell.

프로필 파일 이름도 변경되었습니다.

$PROFILE | Select-Object *Host* | Format-List
 AllUsersAllHosts       : C:\Program Files\PowerShell\7\profile.ps1
 AllUsersCurrentHost    : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
 CurrentUserAllHosts    : C:\Users\<user>\Documents\PowerShell\profile.ps1
 CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

자세한 내용은 about_Profiles.

Windows PowerShell 5.1 모듈과의 PowerShell 7 호환성

Windows PowerShell 5.1에서 사용하는 대부분의 모듈은 이미 Azure PowerShell 및 Active Directory를 포함하여 PowerShell 7에서 작동합니다. Microsoft Graph, Office 365 등 더 많은 모듈에 대한 네이티브 PowerShell 7 지원을 추가하기 위해 다른 팀과 계속 협력하고 있습니다. 지원되는 모듈의 현재 목록은 PowerShell 7 모듈 호환성참조하세요.

메모

또한 Windows에서는 호환되지 않는 모듈을 사용하는 사용자를 위해 PowerShell 7로의 전환을 용이하게 하기 위해 UseWindowsPowerShell 스위치를 추가했습니다. 이 기능에 대한 자세한 내용은 about_Windows_PowerShell_Compatibility참조하세요.

PowerShell 원격 관리

PowerShell 리모팅을 사용하면 하나 이상의 원격 컴퓨터에서 PowerShell 명령을 실행할 수 있습니다. 영구 연결을 설정하고, 대화형 세션을 시작하고, 원격 컴퓨터에서 스크립트를 실행할 수 있습니다.

WS-Management 원격 연결

Windows PowerShell 5.1 이하에서는 연결 협상 및 데이터 전송에 WSMAN(WS-Management) 프로토콜을 사용합니다. WinRM(Windows 원격 관리)은 WSMAN 프로토콜을 사용합니다. WinRM을 사용하도록 설정한 경우 PowerShell 7은 원격 연결에 Microsoft.PowerShell 명명된 기존 Windows PowerShell 5.1 엔드포인트를 사용합니다. 자체 엔드포인트를 포함하도록 PowerShell 7을 업데이트하려면 Enable-PSRemoting cmdlet을 실행합니다. 특정 엔드포인트에 연결하는 방법에 대한 자세한 내용은 PowerShell의 원격 WS-Management를 참조하세요.

Windows PowerShell 원격을 사용하려면 원격 관리를 위해 원격 컴퓨터를 구성해야 합니다. 지침을 비롯한 자세한 내용은 원격 요구 사항참조하세요.

원격 작업의 세부사항에 대해서는 원격을 참조하세요.

SSH 기반 원격 접속

SSH 기반 원격은 WinRM같은 Windows 네이티브 구성 요소를 사용할 수 없는 다른 운영 체제를 지원하기 위해 PowerShell 6.x에 추가되었습니다. SSH 원격 처리는 대상 컴퓨터에 SSH 하위 시스템으로 PowerShell 호스트 프로세스를 실행합니다. Windows 또는 Linux에서 SSH 기반 원격을 설정하는 방법에 대한 자세한 내용과 예제는 SSH를 통한 PowerShell 원격 설정을 참조하세요.

메모

PowerShell 갤러리(PSGallery)에는 SSH 기반 원격을 자동으로 구성하는 모듈 및 cmdlet이 포함되어 있습니다. PSGalleryMicrosoft.PowerShell.RemotingTools 모듈을 설치하고 Enable-SSH cmdlet을 실행합니다.

New-PSSession, Enter-PSSessionInvoke-Command cmdlet에는 SSH 연결을 지원하는 새 매개 변수 집합이 있습니다.

[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]

원격 세션을 만들려면 HostName 매개 변수를 사용하여 대상 컴퓨터를 지정하고 사용자 이름에 UserName제공합니다. cmdlet을 대화형으로 실행할 때 암호를 입력하라는 메시지가 표시됩니다.

Enter-PSSession -HostName <Computer> -UserName <Username>

또는 HostName 매개 변수를 사용하는 경우 사용자 이름 정보와 at sign(@) 뒤에 컴퓨터 이름을 입력합니다.

Enter-PSSession -HostName <Username>@<Computer>

KeyFilePath 매개 변수와 함께 프라이빗 키 파일을 사용하여 SSH 키 인증을 설정할 수 있습니다. 자세한 내용은 OpenSSH 키 관리참조하세요.

지원되는 그룹 정책

PowerShell에는 엔터프라이즈 환경의 서버에 대한 일관된 옵션 값을 정의하는 데 도움이 되는 그룹 정책 설정이 포함되어 있습니다. 이러한 설정은 다음과 같습니다.

  • 콘솔 세션 구성: PowerShell이 실행되는 구성 엔드포인트를 설정합니다.
  • 모듈 로깅 켜기: 모듈의 LogPipelineExecutionDetails 속성을 설정합니다.
  • PowerShell 스크립트 블록 로깅 켜기: 모든 PowerShell 스크립트에 대한 자세한 로깅을 사용하도록 설정합니다.
  • 스크립트 실행 켜기: PowerShell 실행 정책을 설정합니다.
  • PowerShell 기록 켜기: PowerShell 명령의 입력 및 출력을 텍스트 기반 대본으로 캡처할 수 있습니다.
  • Update-Help의 기본 원본 경로 설정: 업데이트 가능한 도움말의 원본을 인터넷이 아닌 디렉터리로 설정합니다.

자세한 내용은 about_Group_Policy_Settings를 확인해 보세요.

PowerShell 7에는 그룹 정책 템플릿 및 $PSHOME설치 스크립트가 포함되어 있습니다.

그룹 정책 도구는 관리 템플릿 파일(.admx, .adml)을 사용하여 사용자 인터페이스에서 정책 설정을 채웁니다. 이렇게 하면 관리자가 레지스트리 기반 정책 설정을 관리할 수 있습니다. InstallPSCorePolicyDefinitions.ps1 스크립트는 로컬 컴퓨터에 PowerShell 관리 템플릿을 설치합니다.

Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
    Directory: C:\Program Files\PowerShell\7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/27/2020 12:38 AM          15861 InstallPSCorePolicyDefinitions.ps1
-a---           2/27/2020 12:28 AM           9675 PowerShellCoreExecutionPolicy.adml
-a---           2/27/2020 12:28 AM           6201 PowerShellCoreExecutionPolicy.admx

별도의 이벤트 로그

Windows PowerShell 및 PowerShell 7은 서로 다른 이벤트 로그에 이벤트를 기록합니다. 다음 명령을 사용하여 PowerShell 로그 목록을 가져옵니다.

Get-WinEvent -ListLog *PowerShell*

자세한 내용은 about_Logging_Windows참조하십시오.

Visual Studio Code를 사용하여 향상된 편집 환경

Visual Studio Code (VSCode)PowerShell 확장은 PowerShell 7에 지원되는 스크립팅 환경입니다. Windows PowerShell ISE(통합 스크립팅 환경)는 Windows PowerShell만 지원합니다.

업데이트된 PowerShell 확장에는 다음이 포함됩니다.

  • 새 ISE 호환 모드
  • 통합 콘솔의 PSReadLine에는 구문 강조 표시, 여러 줄 편집 그리고 역방향 검색 기능이 포함됩니다.
  • 안정성 및 성능 향상
  • 새 CodeLens 통합
  • 향상된 경로 자동 완성

Visual Studio Code로 쉽게 전환하려면 명령 팔레트사용할 수 있는 ISE 모드 사용 함수를 사용합니다. 이 함수는 VSCode를 ISE 스타일 레이아웃으로 전환합니다. ISE 스타일 레이아웃은 친숙한 사용자 환경에서 PowerShell의 모든 새로운 기능과 기능을 제공합니다.

새 ISE 레이아웃으로 전환하려면 Ctrl+Shift+P 눌러 명령 팔레트열고, PowerShell 입력하고, PowerShell: ISE 모드사용하도록 설정합니다.

레이아웃을 원래 레이아웃으로 설정하려면 명령 팔레트열고 PowerShell: ISE 모드 사용 안 함(기본값으로 복원)선택합니다.

VSCode 레이아웃을 ISE로 사용자 지정하는 방법에 대한 자세한 내용은 Visual Studio Code에서 ISE 환경을 복제하는 방법

메모

ISE를 새로운 기능으로 업데이트할 계획은 없습니다. 최신 버전의 Windows 10 또는 Windows Server 2019 이상에서 ISE는 이제 사용자가 제거할 수 없는 기능입니다. ISE를 영구적으로 제거할 계획은 없습니다. PowerShell 팀과 파트너는 Visual Studio Code용 PowerShell 확장에서 스크립팅 환경을 개선하는 데 중점을 두고 있습니다.

다음 단계

효과적으로 마이그레이션하는 지식으로 무장, 지금 PowerShell 7을 설치!