Windows PowerShell 5.0은 사용 범위를 확장하고 사용성을 향상시키며, Windows 기반 환경을 보다 쉽고 포괄적으로 제어하고 관리할 수 있게 하는 중요한 신규 기능을 포함하고 있습니다.
Windows PowerShell 5.0은 하위 호환이 가능합니다. Windows PowerShell 4.0, Windows PowerShell 3.0, Windows PowerShell 2.0을 위해 설계된 Cmdlet, 제공자, 모듈, 스냅인, 스크립트, 함수, 프로필은 일반적으로 Windows PowerShell 5.0에서 변경 없이 작동합니다.
Windows PowerShell 설치
Windows PowerShell 5.0은 기본적으로 Windows Server 2016 기술 프리뷰와 Windows 10에 설치되어 있습니다.
Windows Server 2012 R2, Windows 8.1 Enterprise, 또는 Windows 8.1 Pro에 Windows PowerShell 5.0을 설치하려면 Windows Management Framework 5.0을 다운로드하여 설치하세요. Windows Management Framework 5.0을 설치하기 전에 다운로드 세부 사항을 반드시 읽고 모든 시스템 요구사항을 충족하세요.
이 항목에서
- Windows PowerShell 4.0 DSC 업데이트(KB 3000850
- Windows PowerShell 5.0의 새로운 기능
- Windows PowerShell 4.0의 새로운 기능
- Windows PowerShell 3.0의 새로운 기능
2014년 11월 Windows PowerShell 4.0 업데이트 롤업 (KB 3000850)
Windows PowerShell 4.0의 Windows PowerShell Desired State Configuration(DSC)에 대한 많은 업데이트와 개선 사항이 2014년 11월 Windows RT 8.1, Windows 8.1, Windows Server 2012 R2 (KB3000850)용 업데이트 롤업 에서 제공됩니다. Windows PowerShell에서 실행 Get-Hotfix -Id KB3000850 하면 KB3000850 설치되었는지 확인할 수 있습니다.
PSDesiredStateConfiguration 모듈의 기존 cmdlets 업데이트
- Get-DscResource 가 더 빠릅니다(특히 ISE에서).
- Start-DscConfiguration 에는 -UseExisting이라는 새로운 매개변수가 있는데, 이는 마지막으로 적용된 구성을 다시 적용합니다.
- Start-DscConfiguration -Force이 수정되었습니다.
- Get-DscLocalConfigurationManager 는 엔진 상태에 관한 더 유용한 정보를 보여줍니다.
- Test-DscConfiguration 은 이제 컴퓨터 이름과 함께 참 또는 거짓을 반환합니다.
- New-DSCChecksum 은 이제 UNC 경로를 지원합니다.
PSDesiredStateConfiguration 모듈의 새로운 cmdlet
- Update-DscConfiguration: 주문형 풀 서버 점검을 수행합니다.
- Stop-DSCConfiguration: 이미 실행 중인 구성을 중단합니다.
- Remove-DscConfigurationDocument: 여러 단계(대기 중, 이전 또는 현재)에서 구성 문서를 제거할 수 있습니다.
언어 향상
- DependsOn은 이제 복합 리소스를 지원합니다.
- DependsOn은 이제 리소스 인스턴스 이름에 숫자를 지원합니다.
- 빈 상태로 평가하는 노드 표현식은 더 이상 오류를 던지지 않습니다.
- 노드 표현식이 빈 상태로 평가될 때 발생하는 오류가 수정되었습니다.
- 구성을 호출하는 구성은 이제 Windows PowerShell 콘솔에서 작동합니다.
풀 모드 향상
- 풀 모드는 이제 모든 ZIP 파일을 지원합니다.
- AllowModuleOverwrite가 이제 제대로 작동합니다.
회복력 향상
- 새로운 디버그 모드는 리소스 모듈을 다시 불러올 수 있게 해줍니다.
- 설정 오류가 발생해도 pending.mof 파일은 삭제되지 않습니다.
- 로컬 구성 관리자(LCM)는 메타구성 설정이 손상되었을 때 더 회복력이 향상되었습니다.
진단 개선 사항
- LCM이 타이머를 지정한 설정과 다르게 설정할 때 경고가 표시됩니다.
- 오류 로그 파일에는 이제 Windows PowerShell 리소스의 호출 스택이 포함됩니다.
유연성 개선
- LocalConfigurationManager 리소스에는 새로운 속성인 ActionAfterReboot가 있습니다.
- ContinueConfiguration (기본값): 대상 노드가 재시작되면 자동으로 구성을 재개합니다.
- StopConfiguration: 노드가 재시작된 후 자동으로 구성을 재개하지 마세요.
- 일관성 실행이 PULL 연산보다 더 자주 발생할 수 있으며, 그 반대도 가능합니다.
- 버전 관리 지원: DSC는 이제 최신 클라이언트( WMF 5.0에 포함됨)에서 생성된 문서를 인식할 수 있습니다.
- LocalConfigurationManager 리소스에는 새로운 속성인 ActionAfterReboot가 있습니다.
오류 방지 개선
- 모듈 버전은 이제 구성 적용 전에 강제됩니다.
- 이제 DebugPreference는 Get-, Set-, 또는 Test-TargetResource 호출에 대해 올바르게 설정되었습니다.
자격 증명 처리 개선
- 인증서 와PSDscAllowPlainTextPassword 가 모두 지정되어 있으면 인증서가 사용됩니다.
- 자격 증명은 복호화되어 있으며, Get-TargetResource도 마찬가지입니다.
- 메타구성 자격 증명은 암호화 및 복호화됩니다.
- PSCredential은 이제 임베디드 객체에 있을 때 복호화됩니다.
내장된 자원 개선
Windows PowerShell 5.0의 새로운 기능
- Windows PowerShell의 새로운 기능
- Windows PowerShell Desired State Configuration 의 새로운 기능
- Windows PowerShell ISE의 새로운 기능
- Windows PowerShell 웹 서비스의 새로운 기능
- Windows PowerShell 5.0의 주목할 만한 버그 수정
Windows PowerShell의 새로운 기능
Windows PowerShell 5.0부터는 다른 객체지향 프로그래밍 언어와 유사한 클래스, 형식적 문법, 의미론을 사용해 개발할 수 있습니다. 클래스, Enum 및 기타 키워드가 윈도우 PowerShell 언어에 추가되어 새로운 기능을 지원했습니다. 클래스 작업에 관한 자세한 내용은 about_Classes를 참조하세요.
Windows PowerShell 5.0은 스크립트와 호출자(또는 호스팅 환경) 간에 구조화된 데이터를 전송할 수 있는 새로운 구조화된 정보 스트림을 도입했습니다. 이제 Write-Host를 사용해 정보 스트림에 출력을 보낼 수 있습니다. 정보 스트림은 PowerShell.Streams, 작업, 예약 작업, 워크플로우에도 적용됩니다. 다음 기능들이 정보 흐름을 지원합니다.
- Windows PowerShell이 명령어의 정보 스트림 데이터를 어떻게 처리하는지 지정할 수 있는 새로운 Write-Information cmdlet입니다. Write-Host는 Write-Information의 래퍼입니다. Write-Information 또한 지원되는 워크플로우 활동입니다.
- 두 가지 새로운 일반적인 매개변수인 InformationVariable과 InformationAction은 명령어에서 발생하는 정보 스트림이 어떻게 표시되는지 결정할 수 있게 해줍니다. InformationAction의 유효한 값은 SilentlyContinue, Stop, Continue, Inquire, Ignore, 또는 Suspend이며, 기본값은 SilentlyContinue입니다. InformationVariable은 명령어의 Write-Host 데이터를 저장하고자 하는 변수의 이름으로 문자열을 지정합니다.
- 새로운 선호 변수인 InformationPreference는 Windows PowerShell 세션에서 정보 스트림 데이터에 대한 기본 선호도를 지정합니다. 기본 값은 SilentlyContinue입니다.
- 두 가지 새로운 워크플로우 공통 매개변수인 PSInformation과 InformationAction이 추가되었습니다.
- Format-Table 명령을 사용하면 테이블 열이 스트림을 통과하는 첫 300ms 데이터를 평가하여 자동으로 포맷됩니다.
마이크로소프트 리서치와 협력하여 새로운 명령어인 ConvertFrom-String이 추가되었습니다. ConvertFrom-String 텍스트 문자열 내용에서 구조화된 객체를 추출하고 파싱할 수 있게 해줍니다. 자세한 내용은 ConvertFrom-String을 참조하세요.
새로운 Convert-String 커들렛이 -Example 매개변수에 포함된 예제를 바탕으로 텍스트를 자동으로 서식화합니다.
새로운 모듈인 Microsoft.PowerShell.Archive에는 파일과 폴더를 압축하여 아카이브(ZIP) 파일로 만들고, 기존 ZIP 파일에서 파일을 추출하며, 압축된 최신 버전으로 ZIP 파일을 업데이트할 수 있는 cmdlet이 포함되어 있습니다.
새로운 모듈인 PackageManagement는 인터넷에서 소프트웨어 패키지를 발견하고 설치할 수 있게 해줍니다. 패키지 관리(이전 명칭: OneGet) 모듈은 기존 패키지 관리자(패키지 제공자라고도 함)를 관리하는 관리자 또는 다중화기로, Windows 패키지 관리를 단일 Windows PowerShell 인터페이스로 통합하는 기능입니다.
새로운 모듈인 PowerShellGet은 PowerShell 갤러리나 Register-PSRepository cmdlet을 실행해 설정할 수 있는 내부 모듈 저장소에서 모듈과 DSC 리소스를 찾고, 설치하며, 게시하고, 업데이트할 수 있게 해줍니다.
새로운 언어 키워드인 Hidden이 추가되어 멤버(속성 또는 메서드)가 기본적으로 결과에 표시되지 않게 지정Get-Member 있습니다(-Force 매개변수를 추가하지 않는 한). 숨겨진 속성이나 메서드는 구성원이 보이는 상황이 아닌 이상 IntelliSense 결과에 나타나지 않습니다; 예를 들어, 자동 변수 $This은 클래스 메서드에서 숨겨진 멤버를 표시해야 합니다.
신규 아이템, 제거 아이템, Get-ChildItem 기능이 심 볼릭 링크 생성 및 관리를 지원하도록 강화되었습니다. New-Item의 -ItemType 매개변수는 새로운 값인 SymbolicLink를 받아들입니다. 이제 New-Item cmdlet을 실행하면 한 줄로 심볼릭 링크를 만들 수 있습니다.
Get-ChildItem -Recurse 파라미터와 함께 재귀를 제한하는 새로운 -Depth 파라미터도 있습니다. 예를 들어, Get-ChildItem -Recurse -Depth 2는 현재 폴더, 현재 폴더 내의 모든 자식 폴더, 그리고 자식 폴더 내 모든 폴더의 결과를 반환합니다.
Copy-Item 이제 한 Windows PowerShell 세션에서 다른 세션으로 파일이나 폴더를 복사할 수 있어, 원격 컴퓨터에 연결된 세션(Nano Server를 실행 중인 컴퓨터 포함)에도 파일을 복사할 수 있습니다. 파일을 복사하려면 PSSession ID를 새 -FromSession 값으로 지정하고 -ToSession 매개변수를 각각 원점 경로와 목적지를 지정하는 -Path와 -Destination을 추가하세요. 예를 들어, Copy-Item -Path c:\myFile.txt -ToSession $s -Destination d:\destinationFolder.
Windows PowerShell 전사는 콘솔 호스트(powershell.exe외에도, Windows PowerShell ISE와 같은 모든 호스팅 애플리케이션에 적용될 수 있도록 개선되었습니다). 전사 옵션(시스템 전체 전사 활성화 포함)은 관리자 템플릿/Windows 컴포넌트/Windows PowerShell에서 ' PowerShell 전사 그룹 정책 켜기' 설정을 활성화하여 설정할 수 있습니다.
새로운 상세 스크립트 추적 기능을 통해 시스템에서 Windows PowerShell 스크립팅 사용에 대한 상세한 추적과 분석을 가능하게 합니다. 상세 스크립트 추적을 활성화한 후, Windows PowerShell은 모든 스크립트 블록을 Windows 이벤트 추적(ETW) 이벤트 로그인 Microsoft-Windows-PowerShell/Operational에 기록합니다.
Windows PowerShell 5.0부터는 새로운 암호화 메시지 구문 명령어들이 IETF 표준 형식을 사용하여 RFC5652에서 문서화된 암호화 및 복호화를 지원합니다. Get-CmsMessage, Protect-CmsMessage, Unprotect-CmsMessage cmdlet이 Microsoft.PowerShell.Security 모듈에 추가되었습니다.
Microsoft.PowerShell.Utility 모듈의 새로운 cmdlet인 Get-Runspace, Debug-Runspace, Get-RunspaceDebug, Enable-RunspaceDebug, Disable-RunspaceDebug를 통해 런스페이스에 디버그 옵션을 설정하고, 런스페이스에서 디버깅을 시작하고 중지할 수 있습니다. 임의의 런스페이스(즉, Windows PowerShell 콘솔이나 Windows PowerShell ISE 세션의 기본 런스페이스가 아닌 런스페이스)를 디버깅할 때, Windows PowerShell은 스크립트에 브레이크포인트를 설정할 수 있고, 추가된 브레이크포인트로 인해 런스페이스 스크립트를 디버깅할 디버거를 연결할 때까지 스크립트가 실행되지 않습니다. 임의의 런스페이스에 대한 중첩 디버깅 지원이 Windows PowerShell 스크립트 디버거에 추가되었습니다.
Microsoft.PowerShell.Utility 모듈에 새로운 Format-Hex cmdlet이 추가되었습니다. Format-Hex 텍스트나 이진 데이터를 16진수 형식으로 볼 수 있게 해줍니다.
Get-Clipboard 및 Set-Clipboard cmdlet이 Microsoft.PowerShell.Utility 모듈에 추가되었습니다; 이들은 Windows PowerShell 세션 간 콘텐츠 전송을 용이하게 합니다. 클립보드 커들렛은 이미지, 오디오 파일, 파일 목록, 텍스트를 지원합니다.
새로운 명령어인 Clear-RecycleBin이 Microsoft.PowerShell.Management 모듈에 추가되었습니다; 이 명령어는 외장 드라이브를 포함한 고정 드라이브를 위해 휴지통을 비워줍니다. 기본적으로 명령어를 Clear-RecycleBin확인하라는 메시지가 나오는데, 이는 cmdlet의 ConfirmImpact 속성이 ConfirmImpact.High로 설정되어 있기 때문입니다.
새로운 명령어인 New-TemporaryFile은 스크립팅의 일환으로 임시 파일을 생성할 수 있게 해줍니다. 기본적으로 새 임시 파일은 에 생성
C:\Users\<user name>\AppData\Local\Temp됩니다.아웃 파일, 추가, Set-Content cmdlet에 새로운 -NoNewline 매개변수가 생겨 출력 후 새로운 줄이 생략됩니다.
New-Guid cmdlet은 .NET Framework Guid 클래스를 활용해 GUID를 생성하는데, 스크립트나 DSC 리소스를 작성할 때 유용합니다.
파일 버전 정보는 특히 패치 후 오해의 소지가 있을 수 있기 때문에, FileInfo 객체에 대해 새로운 FileVersionRaw와 ProductVersionRaw 스크립트 속성이 제공됩니다. 예를 들어, powershell.exe의 속성 값을 표시하는 다음 명령어를 실행할 수 있는데, 여기서 $pid는 실행 중인 Windows PowerShell 세션의 프로세스 ID를 포함합니다:
Get-Process -Id $pid -FileVersionInfo | Format-List *version* -Force새로운 명령어 Enter-PSHostProcess과 Exit-PSHostProcess 윈도우 PowerShell 스크립트를 현재 실행 중인 프로세스와 별개의 프로세스에서 디버깅할 수 있게 해줍니다. Enter-PSHostProcess 실행하여 특정 프로세스 ID를 입력하거나 연결한 후, Get-Runspace 실행하여 프로세스 내 활성 런스페이스를 반환합니다. 스크립트 디버깅을 마치고 프로세스에서 분리하기 위해 Exit-PSHostProcess 실행하세요.
Microsoft.PowerShell.Utility 모듈에 새로운 Wait-Debugger cmdlet이 추가되었습니다. 다음 문장을 실행하기 전에 디버거에서 스크립트를 멈추는 Wait-Debugger 실행 가능합니다.
Windows PowerShell 워크플로우 디버거는 이제 명령어 또는 탭 완성을 지원하며, 중첩된 워크플로우 함수를 디버깅할 수 있습니다. 이제 Ctrl+Break 를 눌러 실행 중인 스크립트, 로컬 및 원격 세션, 워크플로우 스크립트에서 디버거를 입력할 수 있습니다.
Windows.PowerShell.Core 모듈에 Debug-Job 명령어가 추가되어 Windows PowerShell 워크플로우, 백그라운드, 원격 세션에서 실행되는 작업을 디버깅할 수 있습니다.
Windows PowerShell 작업을 위해 AtBreakpoint라는 새로운 상태가 추가되었습니다. AtBreakpoint 상태는 작업이 설정된 브레이크포인트를 포함하는 스크립트를 실행 중이고, 스크립트가 브레이크포인트에 도달했을 때 적용됩니다. 작업이 디버그 브레이크포인트에서 멈추면, Debug-Job cmdlet을 실행하여 작업을 디버깅해야 합니다.
Windows PowerShell 5.0은 $PSModulePath 내 동일한 폴더 내에 단일 Windows PowerShell 모듈의 여러 버전을 지원합니다. 원하는 모듈 버전을 얻는 데 도움을 주기 위해 ModuleSpecification 클래스에 RequiredVersion 속성이 추가되었습니다; 이 속성은 ModuleVersion 속성과 상호 배타적입니다. RequiredVersion은 이제 Get-Module, Import-Module, Remove-Module cmdlet의 FullQualifiedName 매개변수 값의 일부로 지원됩니다.
이제 Test-ModuleManifest cmdlet을 실행하면 모듈 버전 검증을 수행할 수 있습니다.
Get-Command 명령어의 결과는 이제 버전 열을 표시합니다; CommandInfo 클래스에 새로운 버전 속성이 추가되었습니다. Get-Command 같은 모듈의 여러 버전에서 온 명령어를 보여줍니다. 버전 속성은 CmdletInfo의 파생 클래스인 CmdletInfo와 ApplicationInfo의 일부이기도 합니다.
Get-Command ShowCommandInfo라는 새로운 매개변수가 있어 ShowCommand 정보를 PSObject로 반환합니다. 이 Show-Command기능은 특히 Windows PowerShell ISE에서 Windows PowerShell 원격 처리를 사용할 때 유용합니다. -ShowCommandInfo 매개변수는 Microsoft.PowerShell.Utility 모듈의 기존 Get-SerializedCommand 함수를 대체하지만, Get-SerializedCommand 스크립트는 여전히 하위 단계 스크립트를 지원할 수 있습니다.
새로운 Get-ItemPropertyValue cmdlet은 점 표기법 없이도 속성의 값을 얻을 수 있게 해줍니다. 예를 들어, Windows PowerShell의 구버전 버전에서는 PowerShellEngine 레지스트리 키의 Application Base 속성 값을 얻기 위해 다음과 같은 명령을 실행할 수 있습니다: (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase). ApplicationBase. Windows PowerShell 5.0부터는 HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase를Get-ItemPropertyValue -Path 실행할 수 있습니다.
Windows PowerShell 콘솔은 이제 Windows PowerShell ISE와 마찬가지로 구문 색칠을 사용합니다.
새로운 NetworkSwitch 모듈에는 Windows Server 2012 R2 로고 인증 네트워크 스위치에 스위치, 가상 LAN(VLAN), 기본 레이어 2 네트워크 스위치 포트 구성을 적용할 수 있는 cmdlet이 포함되어 있습니다.
FullyQualifiedName 매개변수는 하나의 모듈의 여러 버전을 저장할 수 있도록 Import-Module 및 Remove-Module cmdlet에 추가되었습니다.
Save-Help, Update-Help, Import-PSSession, Export-PSSession, Get-Command ModuleSpecification 타입의 FullQualifiedModule 새로운 매개변수가 있습니다. 이 매개변수를 추가하여 모듈을 완전 자격화된 이름으로 지정합니다.
$PSVersionTable.PSVersion 가치는 5.0으로 업데이트되었습니다.
WMF 5.0(PowerShell 5.0)에는 Pester 모듈이 포함되어 있습니다. Pester는 PowerShell용 단위 테스트 프레임워크입니다. 스크립트 테스트를 만들 수 있는 사용하기 쉬운 몇 가지 키워드를 제공합니다.
Windows PowerShell Desired State Configuration 의 새로운 기능
- Windows PowerShell 언어 향상 기능을 통해 클래스를 사용하여 Windows PowerShell Desired State Configuration(DSC) 자원을 정의할 수 있습니다. Import-DscResource 이제 진정한 동적 키워드가 되었습니다; Windows PowerShell은 지정된 모듈의 루트 모듈을 파싱하여 DscResource 속성을 포함하는 클래스를 찾습니다. 이제 클래스를 사용해 DSC 리소스를 정의할 수 있는데, 모듈 폴더 내 MOF 파일이나 DSCResource 하위 폴더가 필요하지 않습니다. Windows PowerShell 모듈 파일은 여러 DSC 리소스 클래스를 포함할 수 있습니다.
- 새로운 매개변수인 ThrottleLimit이 PSDesiredStateConfiguration 모듈의 다음 cmdlet에 추가되었습니다. ThrottleLimit 매개변수를 추가하여 명령어가 동시에 작동하도록 원하는 대상 컴퓨터나 장치 수를 지정합니다.
- Get-DscConfiguration
- Get-DscConfigurationStatus
- Get-DscLocalConfigurationManager
- Restore-DscConfiguration
- Test-DscConfiguration
- Compare-DscConfiguration
- Publish-DscConfiguration
- Set-DscLocalConfigurationManager
- Start-DscConfiguration
- Update-DscConfiguration
- 중앙집중식 DSC 오류 보고를 통해 풍부한 오류 정보가 이벤트 로그에 기록될 뿐만 아니라 중앙 위치로 전송되어 나중에 분석할 수 있습니다. 이 중앙 위치를 사용하여 환경 내 어떤 서버에서든 발생한 DSC 구성 오류를 저장할 수 있습니다. 메타 구성에서 리포트 서버가 정의된 후, 모든 오류는 리포트 서버로 전송되어 데이터베이스에 저장됩니다. 이 기능은 대상 노드가 풀 서버에서 구성을 풀하도록 설정되었는지 여부와 상관없이 설정할 수 있습니다.
- Windows PowerShell ISE 개선점, DSC 리소스 작성 용이함. 이제 다음과 같은 작업을 할 수 있습니다.
- 구성 또는 노드 블록 내 모든 DSC 자원을 블록 내 빈칸에 Ctrl+Space를 입력하여 나열하세요.
- 열 거 유형의 자원 속성에 대한 자동 완성.
- 구성 내 다른 리소스 인스턴스를 기반으로 DSC 자원의 DependsOn 속성에 자동 완료됩니다.
- 리소스 속성 값의 탭 완성 개선.
- 사용자는 이제 노드 블록에 PSDscRunAsCredential 속성을 추가하여 지정된 자격 증명 집합으로 자원을 실행할 수 있습니다. 예를 들어, PSDscRunAsCredential = Get-Credential Contoso\DscUser. 이 기능은 Windows 설치 프로그램과 실행 파일 설치 프로그램을 실행하는 구성 생성, 사용자별 레지스트리 하이브에 접근하는 기능, 또는 현재 사용자 맥락 밖의 다른 작업을 수행하는 데 유용합니다.
- 구성 키워 드에 대해 32비트(x86 기반) 지원이 추가되었습니다.
- Windows PowerShell은 생성된 구성 함수에 [CmdletBinding()] 추가하여 정의된 DSC 구성에 대한 맞춤형 도움말 지원을 포함합니다.
- 새로운 DscLocalConfigurationManager 속성은 설정 블록을 메타 구성으로 지정하여 DSC 로컬 구성 관리자를 구성하는 데 사용됩니다. 이 속성은 DSC 로컬 구성 관리자를 구성하는 항목만 포함하도록 설정하도록 제한합니다. 처리 중에 이 구성은 *.meta.mof 파일을 생성하여 Set-DscLocalConfigurationManager cmdlet을 실행하여 적절한 대상 노드로 전송합니다.
- Windows PowerShell 5.0에서는 부분 설정이 허용되었습니다. 구성 문서를 노드에 조각조각 나누어 전달할 수 있습니다. 노드가 구성 문서의 여러 조각을 받으려면, 노드의 로컬 구성 관리자가 먼저 예상되는 조각을 지정하도록 설정해야 합니다
- 컴퓨터 간 동기화는 Windows PowerShell 5.0의 DSC에서 새롭게 도입되었습니다. 내장된 WaitFor* 리소스(WaitForAll, WaitForAny, WaitForSome)를 사용하면, 이제 구성 실행 시 외부 오케스트레이션 없이 컴퓨터 간 의존성을 지정할 수 있습니다. 이 자원들은 WS-Man 프로토콜을 통한 CIM 연결을 통해 노드 간 동기화를 제공합니다. 구성은 다른 컴퓨터의 특정 자원 상태가 변할 때까지 기다릴 수 있습니다.
- Just Enough Administration(JEA)은 새로운 위임 보안 기능으로, DSC와 Windows PowerShell로 제한된 런스페이스를 활용해 직원들의 데이터 손실이나 침해로부터 기업을 보호합니다. 이는 의도적이든 아니든입니다. JEA에 대한 자세한 정보와 xJEA DSC 자료 다운로드 방법은 Just Enough Administration을 참조하세요.
- 다음 새로운 cmdlet들이 PSDesiredStateConfiguration 모듈에 추가되었습니다.
- 새로운 Get-DscConfigurationStatus cmdlet은 대상 노드로부터 구성 상태에 대한 고수준 정보를 얻습니다. 마지막 상태나 모든 구성의 상태를 확인할 수 있습니다.
- 새로운 Compare-DscConfiguration 명령어는 지정된 구성과 하나 이상의 대상 노드의 실제 상태를 비교합니다.
- 새로운 Publish-DscConfiguration 명령어는 구성 MOF 파일을 대상 노드에 복사하지만, 그 구성을 적용하지는 않습니다. 이 구성은 다음 일관성 패스 시나 Update-DscConfiguration cmdlet을 실행할 때 적용됩니다.
- 새로운 Test-DscConfiguration cmdlet은 결과된 구성이 원하는 구성과 일치하는지 검증할 수 있게 해줍니다. 구성이 원하는 구성과 일치하면 True, 실제 구성이 원하는 구성과 일치하지 않으면 False를 반환합니다.
- 새로운 Update-DscConfiguration cmdlet은 구성을 처리하도록 강제합니다. 로컬 구성 관리자가 풀 모드일 경우, cmdlet은 풀 서버로부터 구성을 받아 적용합니다.
Windows PowerShell ISE의 새로운 기능
- 이제 원격 Windows PowerShell 스크립트와 파일을 Windows PowerShell ISE의 로컬 사본에서 편집할 수 있습니다. 편집하려는 파일을 저장하는 컴퓨터에서 원격 세션을 시작하기 위해 Enter-PSSession 실행 후, 원격 컴퓨터에서> PSEdit <경로와 파일 이름을 실행하면 됩니다. 이 기능은 Windows PowerShell ISE가 실행되지 않는 Windows Server Core 설치 옵션에 저장된 Windows PowerShell 파일을 편집하는 것을 쉽게 합니다.
- Start-Transcript cmdlet은 현재 Windows PowerShell ISE에서 지원되고 있습니다.
- 이제 Windows PowerShell ISE에서 원격 스크립트를 디버깅할 수 있습니다.
- 새로운 메뉴 명령어인 Break All(Ctrl +B)은 로컬 및 원격 실행 스크립트 모두에 대해 디버거에 침투합니다.
Windows PowerShell 웹 서비스의 새로운 기능들 (Management OData IIS 확장)
- Windows PowerShell 5.0부터는 새로운 Microsoft.PowerShell.OdataUtils 모듈에 포함된 Export-ODataEndpointProxy cmdlet을 실행하여 특정 OData 엔드포인트가 노출하는 기능을 기반으로 Windows PowerShell cmdlet 집합을 생성할 수 있습니다.
Windows PowerShell 5.0의 주목할 만한 버그 수정
- Windows PowerShell 5.0에는 새로운 COM 구현이 포함되어 있어 COM 객체를 다룰 때 상당한 성능 향상을 제공합니다.
- Windows PowerShell 세션에서 첫 탭 완료 시 상당한 성능 향상이 이루어져 탭 완료 시간이 거의 500ms나 단축되었습니다.
Windows PowerShell 4.0의 새로운 기능
Windows PowerShell 4.0은 하위 호환이 가능합니다. Windows PowerShell 3.0과 Windows PowerShell 2.0용으로 설계된 Cmdlet, 제공자, 모듈, 스냅인, 스크립트, 함수, 프로파일은 변경 없이 Windows PowerShell 4.0에서 작동합니다.
Windows PowerShell 4.0은 기본적으로 Windows 8.1과 Windows Server 2012 R2에 설치되어 있습니다. Windows PowerShell 4.0을 SP1과 함께 Windows 7에 설치하거나 Windows Server 2008 R2를 설치하려면 Windows Management Framework 4.0을 다운로드하여 설치하세요. Windows Management Framework 4.0을 설치하기 전에 다운로드 정보를 꼼꼼히 읽고 모든 시스템 요구사항을 충족하세요.
- Windows PowerShell의 새로운 기능
- Windows PowerShell 통합 스크립팅 환경(ISE)의 새로운 기능
- Windows PowerShell 워크플로우의 새로운 기능
- Windows PowerShell 웹 서비스의 새로운 기능
- Windows PowerShell 웹 액세스의 새로운 기능
- Windows PowerShell 4.0의 주목할 만한 버그 수정
Windows PowerShell 4.0에는 다음과 같은 새로운 기능들이 포함되어 있습니다.
Windows PowerShell의 새로운 기능
- Windows PowerShell Desired State Configuration (DSC)은 Windows PowerShell 4.0의 새로운 관리 시스템으로, 소프트웨어 서비스와 이 서비스가 실행되는 환경의 구성 데이터를 배포하고 관리할 수 있게 합니다. DSC에 대한 자세한 내용은 Windows PowerShell Desired State Configuration 시작을 참조하세요.
- 이제 Save-Help는 원격 컴퓨터에 설치된 모듈에 도움을 저장할 수 있게 해줍니다. Save-Help를 사용해 인터넷에 연결된 클라이언트에서 모듈 도움말을 다운로드할 수 있습니다(도움을 원하는 모든 모듈이 반드시 설치된 것은 아닙니다). 그리고 저장된 도움말을 원격 공유 폴더나 인터넷 접속이 불가능한 원격 컴퓨터로 복사할 수 있습니다.
- Windows PowerShell 디버거는 Windows PowerShell 워크플로우뿐만 아니라 원격 컴퓨터에서 실행되는 스크립트의 디버깅이 가능하도록 강화되었습니다. Windows PowerShell 워크플로우는 이제 Windows PowerShell 명령줄이나 Windows PowerShell ISE에서 스크립트 수준에서 디버깅할 수 있습니다. Windows PowerShell 스크립트와 스크립트 워크플로우는 이제 원격 세션에서 디버깅할 수 있습니다. 원격 디버깅 세션은 Windows PowerShell 원격 세션을 통해 보존되며, 이 세션은 분리되었다가 나중에 다시 연결됩니다.
- Register-ScheduledJob과 Set-ScheduledJob에 대한 RunNow 매개변수는 Trigger 매개변수를 사용해 작업에 즉시 시작일과 시간을 설정할 필요가 없게 합니다.
- Invoke-RestMethod 와 Invoke-WebRequest 는 이제 Headers 매개변수를 사용하여 모든 헤더를 설정할 수 있게 해줍니다. 이 매개변수는 항상 존재해 왔지만, 웹 명령어의 여러 매개변수 중 하나로 예외나 오류를 발생시켰습니다.
- Get-Module에는ModuleSpecification[] 타입의 FullQualifiedName이라는 새로운 매개변수가 있습니다. Get-Module의 FullyQualifiedName 매개변수는 이제 모듈의 이름, 버전, 그리고 선택적으로 GUID를 사용하여 모듈을 지정할 수 있게 해줍니다.
- Windows Server 2012 R2의 기본 실행 정책 설정은 RemoteSigned입니다. Windows 8.1에서는 기본 설정이 변경되지 않습니다.
- Windows PowerShell 4.0부터는 동적 메서드 이름을 이용한 메서드 호출이 지원됩니다. 메서드 이름을 저장하는 변수를 사용하고, 변수를 호출하여 동적으로 메서드를 호출할 수 있습니다.
- 비동기 워크플로우 작업은 PSElapsedTimeoutSec 워크플로우 공통 매개변수에 의해 지정된 타임아웃 기간이 지나면 더 이상 삭제되지 않습니다.
- New-JobTrigger와 Set-JobTrigger cmdlet에 새로운 매개변수인 RepeatIndefinitely가 추가되었습니다. 이로 인해 일정 작업을 무기한 기간 반복 실행하기 위해 RepetitionDuration 매개변수에 TimeSpan.MaxValue 값을 지정할 필요가 없어집니다.
- Enable-JobTrigger와 Disable-JobTrigger cmdlet에 Passthru 매개변수가 추가되었습니다. Passthru 파라미터는 명령어로 생성되거나 수정된 모든 객체를 표시합니다.
- Add-Computer 및 Remove-Computer 명령어에서 작업 그룹을 지정하는 매개변수 이름은 이제 일관되었습니다. 두 명령어 모두 이제 워크그룹네임 매개변수를 사용합니다.
- 새로운 공통 매개변수인 PipelineVariable이 추가되었습니다. PipelineVariable은 파이프 명령어(또는 파이프 명령의 일부)의 결과를 파이프라인의 나머지 부분을 통과할 수 있는 변수로 저장할 수 있게 해줍니다.
- 메서드 문법을 이용한 컬렉션 필터링이 이제 지원됩니다. 즉, Where() 또는 Where-Object와 유사하게 메서드 호출 형식으로 단순화된 구문을 사용해 객체 집합을 필터링할 수 있습니다. 다음은 예시입니다: (Get-Process).where({$_. 이름 -match 'powershell'})
- Get-Process cmdlet에는 새로운 스위치 매개변수인 IncludeUserName이 있습니다.
- 지정된 파일에 대해 여러 형식 중 하나의 파일 해시를 반환하는 새로운 명령어인 Get-FileHash가 추가되었습니다.
- Windows PowerShell 4.0에서 모듈이 매니페스트에 DefaultCommandPrefix 키를 사용하거나 사용자가 Prefix 매개변수가 포함된 모듈을 가져오면, 모듈의 ExportedCommands 속성이 접두사가 포함된 모듈 내 명령어를 표시합니다. 모듈 자격식 구문인 ModuleName\CommandName을 사용해 명령어를 실행할 때, 명령어 이름에 접두사가 포함되어야 합니다.
- $PSVersionTable.PSVersion의 가치는 4.0으로 업데이트되었습니다.
-
여기서 연산자 동작이 변경되었습니다.
Collection.Where('property -match name')이 형식"Property -CompareOperator Value"에서 문자열 표현식을 받는 것은 더 이상 지원되지 않습니다. 하지만 Where() 연산자는 스크립트블록 형식의 문자열 표현식을 받아들입니다; 이 기능은 여전히 지원되고 있습니다.
Windows PowerShell 통합 스크립팅 환경(ISE)의 새로운 기능
- Windows PowerShell ISE는 Windows PowerShell 워크플로우 디버깅과 원격 스크립트 디버깅을 모두 지원합니다.
- Windows PowerShell 필요한 상태 구성 공급자 및 구성에 대한 IntelliSense 지원이 추가되었습니다.
Windows PowerShell 워크플로우의 새로운 기능
- System Center Orchestrator에서 사용하는 반복 파이프라인 맥락에서 새로운 PipelineVariable 공통 매개변수 지원이 추가되었습니다; 즉, 스트리밍을 이용한 간헐적 실행이 아니라 단순히 좌우로 명령을 실행하는 파이프라인입니다.
- 매개변수 바인딩은 현재 런스페이스에 존재하지 않는 명령어와 같이 탭 완성 상황 밖에서도 작동하도록 크게 개선되었습니다.
- Windows PowerShell 워크플로우에 맞춤형 컨테이너 활동 지원이 추가되었습니다. 만약 활동 매개변수가 Activity, Activity[] (또는 일반적인 활동 집합)이고 사용자가 인수로 스크립트 블록을 제공했다면, Windows PowerShell 워크플로우는 일반적인 Windows PowerShell 스크립트-워크플로우 컴파일과 마찬가지로 해당 스크립트 블록을 XAML로 변환합니다.
- 충돌 후 Windows PowerShell 워크플로우는 자동으로 관리 노드에 재연결됩니다.
- 이제 ThrottleLimit 속성을 사용하여 Foreach -Parallel 활동 문장을 스로틀할 수 있습니다.
- ErrorAction 공통 매개변수는 워크플로우 전용으로 유효한 값인 Suspend를 추가했습니다.
- 이제 워크플로우 엔드포인트는 활성 세션이 없거나, 진행 중인 작업이 없거나, 보류 중인 작업이 없으면 자동으로 종료됩니다. 이 기능은 자동 종료 조건이 충족되면 워크플로우 서버 역할을 하는 컴퓨터의 자원을 절약합니다.
Windows PowerShell 웹 서비스의 새로운 기능
- Windows PowerShell Web Services(PSWS, Management OData IIS 확장이라고도 함)에서 오류가 발생하면, cmdlet이 실행 중이면 호출자에게 더 상세한 오류 메시지가 반환됩니다. 또한, 오류 코드는 Windows Azure REST API 오류 코드 가이드라인을 따릅니다.
- 엔드포인트는 이제 API 버전을 정의할 수 있고, 특정 API 버전 사용을 강제할 수도 있습니다. 클라이언트와 서버 간에 버전 불일치가 발생할 때, 오류는 클라이언트와 서버 모두에 표시됩니다.
- 디스패치 스키마 관리는 스키마 내 누락된 필드에 대해 자동으로 값을 생성하여 단순화되었습니다. 생성은 디스패치 스키마가 존재하지 않더라도 유용한 출발점으로 이루어집니다.
- PSWS의 타입 처리는 기본 구속자와 다른 구체자를 사용하는 타입을 지원하도록 개선되었으며, 이는 Windows PowerShell의 PSTypeConverter 와 유사하게 동작합니다. 이 기능을 통해 PSWS와 함께 복잡한 타입을 사용할 수 있습니다.
- PSWS는 쿼리를 실행할 때 관련 인스턴스를 확장할 수 있게 되었습니다. 이미지, 오디오, 비디오와 같은 큰 이진 콘텐츠의 경우 전송 비용이 상당하며, 인코딩 없이 이진 데이터를 전송하는 것이 더 낫습니다. PSWS는 인코딩 없이 전송하기 위해 이름 있는 리소스 스트림을 사용합니다. 명명된 리소스 스트림은 Edm.Stream 타입의 엔터티의 속성입니다. 각 명명된 리소스 스트림은 GET 또는 UPDATE 작업을 위한 별도의 URI를 가집니다.
- OData 액션은 이제 리소스에 대해 비CRUD(생성, 읽기, 업데이트, 삭제) 메서드를 호출하는 메커니즘을 제공합니다. 액션을 호출하려면 액션에 대해 정의된 URI에 HTTP POST 요청을 보낼 수 있습니다. 이 동작의 매개변수는 POST 요청의 본문에 정의되어 있습니다.
- Windows Azure 지침에 일관성을 유지하기 위해 모든 URL은 단순화되어야 합니다. 키로서 세그먼트에 포함된 변경 사항으로 단일 키를 세그먼트로 표현할 수 있게 되었습니다. 여러 키 값을 사용하는 참조는 앞서와 마찬가지로 괄호 기호로 쉼표 구분된 값을 요구합니다.
- PSWS 이전 버전에서는 생성, 업데이트, 삭제 작업을 수행하는 유일한 방법은 최상위 자원에서 Post, Put, 또는 Delete를 호출하는 것이었습니다. 이번 PSWS 릴리스에서 새롭게 도입된 Contained Resource 작업은 사용자가 동일한 결과를 얻으면서도 같은 자원에 덜 직접적으로 접근할 수 있게 해주며, 마치 이 자원들이 포함된 것처럼 접근합니다.
Windows PowerShell 웹 액세스의 새로운 기능
- 웹 기반 Windows PowerShell Web Access 콘솔에서 기존 세션과 연결을 끊었다가 다시 연결할 수 있습니다. 웹 기반 콘솔의 저장 버튼을 통해 세션을 삭제하지 않고 다시 연결할 수 있습니다.
- 기본 매개변수는 로그인 페이지에서 확인할 수 있습니다. 기본 매개변수를 표시하려면, 로그인 페이지의 선택적 연결 설정 영역에 표시되는 모든 설정의 값을 web.config라는 파일에서 설정하세요. web.config 파일을 사용해 두 번째 또는 대체 자격 증명 세트를 제외한 모든 선택적 연결 설정을 구성할 수 있습니다.
- Windows Server 2012 R2에서는 Windows PowerShell Web Access에 대한 권한 부여 규칙을 원격으로 관리할 수 있습니다. Add-PswaAuthorizationRule과 Test-PswaAuthorizationRule 명령어 명령어는 이제 관리자가 원격 컴퓨터나 Windows PowerShell 웹 액세스 세션에서 권한 규칙을 관리할 수 있도록 하는 자격 증명 매개변수를 포함합니다.
- 이제 각 세션마다 새로운 브라우저 탭을 사용함으로써 하나의 브라우저 세션에서 여러 개의 Windows PowerShell 웹 액세스 세션을 가질 수 있습니다. 웹 기반 Windows PowerShell 콘솔에서 새 세션에 연결하기 위해 새 브라우저 세션을 열 필요가 없습니다.
Windows PowerShell 4.0의 주목할 만한 버그 수정
- Get-Counter 는 이제 프랑스어 윈도우 판에서 아포스트로피 문자가 포함된 카운터를 반환할 수 있습니다.
- 이제 디직렬화된 객체에서 GetType 메서드를 볼 수 있습니다.
- #Requires 문장은 이제 사용자가 필요 시 관리자 접근 권한을 요구할 수 있게 합니다.
- Import-Csv 명령어렛은 이제 빈 줄을 무시합니다.
- Invoke-WebRequest 명령을 실행할 때 Windows PowerShell ISE가 너무 많은 메모리를 사용하는 문제가 해결되었습니다.
- Get-Module은 이제 버전 열에 모듈 버전을 표시합니다.
- Remove-Item -Recurse 이제 예상대로 하위 폴더에서 항목을 제거합니다.
- Get-Process 출력 객체에 UserName 속성이 추가되었습니다.
- Invoke-RestMethod 명령어가 이제 모든 가능한 결과를 반환합니다.
- Add-Member 은 이제 해시테이블에 아직 접근되지 않았더라도 해시테이블에 적용됩니다.
- Select-Object -Expand 는 속성의 값이 null이거나 비어 있으면 더 이상 실패하거나 예외를 생성하지 않습니다.
- Get-Process 는 이제 객체에서 ComputerName 속성을 얻는 다른 명령들과 함께 파이프라인에서 사용할 수 있습니다.
- ConvertTo-Json 과 ConvertFrom-Json 은 이제 이중 따옴표 안에 있는 용어를 받아들일 수 있으며, 오류 메시지도 현지화가 가능합니다.
- Get-Job은 이제 완료된 예약된 작업을 새 세션에서도 반환합니다.
- Windows PowerShell 4.0에서 FileSystem 프로바이더를 이용한 VHD 마운트 및 언마운트 문제는 수정되었습니다. Windows PowerShell은 이제 같은 세션에 마운트된 새 드라이브를 감지할 수 있게 되었습니다.
- 더 이상 ScheduledJob 이나 Workflow 모듈을 명시적으로 불러와서 각 작업 유형과 작업할 필요가 없습니다.
- 중첩 워크플로우를 정의하는 워크플로우를 가져오는 과정에서 성능 향상이 이루어졌습니다; 이 과정은 이제 더 빠릅니다.
Windows PowerShell 3.0의 새로운 기능
Windows PowerShell 3.0에는 다음과 같은 새로운 기능들이 포함되어 있습니다.
- Windows PowerShell 워크플로우
- Windows PowerShell 웹 액세스
- 새로운 Windows PowerShell ISE 기능
- Microsoft .NET Framework 4.0 지원
- Windows 사전 설치 환경 지원
- 분리된 세션들
- 견고한 세션 연결성
- 업데이트 가능한 도움말 시스템
- 향상된 온라인 도움말
- CIM 통합
- 세션 구성 파일
- 예약된 작업과 작업 스케줄러 통합
- Windows PowerShell 언어 개선
- 새로운 핵심 명령어
- 기존 핵심 명령어 및 제공자의 개선
- 원격 모듈 가져오기 및 발견
- 향상된 탭 완성
- 모듈 자동 로딩
- 모듈 경험 개선
- 간소화된 명령 발견
- 개선된 로그, 진단, 그룹 정책 지원
- 포맷 및 출력 개선
- 향상된 콘솔 호스트 경험
- 새로운 Cmdlet 및 호스팅 API
- 성능 개선
- RunA 및 공유 호스트 지원
- 특수 문자 처리 개선
Windows PowerShell 워크플로우
Windows PowerShell Workflow는 Windows Workflow Foundation의 힘을 Windows PowerShell에 적용합니다.
워크플로우는 XAML이나 Windows PowerShell 언어로 작성할 수 있고, 명령어를 실행하는 것처럼 실행할 수 있습니다. cmdlet은 Get-Command 워크플로우 명령을 받고, cmdlet은 Get-Help 워크플로우 도움말을 받습니다.
워크플로우는 장시간 실행되고, 반복 가능하며, 자주 수행되고, 병렬화되고, 인터럽트가 가능하며, 일시 중지가 가능하고, 재시작 가능한 다중 컴퓨터 관리 활동의 연속입니다. 워크플로우는 네트워크 장애, 윈도우 재시작, 정전 등 의도적 또는 우발적 중단으로 재개될 수 있습니다.
워크플로우도 이식 가능하며; XAML 파일로 내보내거나 가져오기 모두 가능합니다. 워크플로우나 활동이 위임되거나 하위 사용자가 실행할 수 있도록 맞춤형 세션 구성을 작성할 수 있습니다.
다음은 Windows PowerShell 워크플로우의 장점입니다
- 순서대로 진행되는 장기 작업 자동화.
- 장기 실행 작업의 원격 모니터링. 활동의 상태와 진행 상황은 언제든지 확인할 수 있습니다.
- 멀티컴퓨터 관리. 수백 개의 관리되는 노드에서 동시에 작업을 워크플로우로 실행합니다. Windows PowerShell 워크플로우에는 PSComputerName과 같은 공통 관리 매개변수의 내장 라이브러리가 포함되어 있어 다중 컴퓨터 관리 시나리오를 지원합니다.
- 복잡한 프로세스의 단일 작업 실행. 전체 엔드 투 엔드 시나리오를 구현하는 관련 스크립트들을 하나의 워크플로우로 결합할 수 있습니다.
- 지속성.: 워크플로우는 작성자가 정의한 특정 지점에 저장(또는 체크포인트)되어 있어, 워크플로우를 처음부터 다시 시작할 필요가 없습니다.
- 견고성. 자동 고장 복구. 워크플로우는 계획된 재시작과 예상치 못한 재시작 모두에서 살아남습니다. 워크플로우 실행을 일시 중지한 후 마지막 지속 지점에서 워크플로우를 재개할 수 있습니다. 워크플로우 작성자는 하나 이상의 관리되는 노드에서 실패 시 재실행할 특정 활동을 지정할 수 있습니다.
- 연결이 끊긴 세션에서 분리, 재연결, 실행 기능. 사용자는 워크플로우 서버와 연결하거나 분리할 수 있지만, 워크플로우는 계속 실행됩니다. 클라이언트 컴퓨터에서 로그아웃하거나 재시작해서 다른 컴퓨터에서 워크플로우 실행을 모니터링할 수 있는데, 워크플로우를 중단하지 않습니다.
- 일정. 워크플로우 작업은 Windows PowerShell 명령어나 스크립트처럼 스케줄링할 수 있습니다.
- 워크플로우와 연결 제한. 워크플로우 실행과 노드 연결을 제한할 수 있어 확장성과 고가용성 시나리오를 가능하게 합니다.
Windows PowerShell 웹 액세스
Windows PowerShell 웹 접근은 사용자가 웹 기반 콘솔에서 Windows PowerShell 명령어와 스크립트를 실행할 수 있게 해주는 Windows Server 2012 기능입니다. 웹 기반 콘솔을 사용하는 기기는 Windows PowerShell, 원격 관리 소프트웨어, 브라우저 플러그인 설치가 필요하지 않습니다. 필요한 것은 적절히 구성된 Windows PowerShell 웹 액세스 게이트웨이와 JavaScript를 지원하고 쿠키를 허용하는 클라이언트 장치 브라우저뿐입니다.
자세한 내용은 Windows PowerShell 웹 액세스 배포를 참조하세요.
새로운 Windows PowerShell ISE 기능
Windows PowerShell 3.0의 경우 Windows PowerShell 통합 스크립팅 환경(ISE)은 IntelliSense, Show-Command 창, 통합 콘솔 창, 스니펫, 대괄호 매칭, 펼치기-축소 섹션, 자동 저장, 최근 항목 목록, 리치 복사, 블록 복사, Windows PowerShell 스크립트 워크플로우 작성 완전 지원 등 많은 새로운 기능을 갖추고 있습니다. 자세한 내용은 about_Windows_PowerShell_ISE를 참조하세요.
Microsoft .NET Framework 4 지원
Windows PowerShell은 Common Language Runtime 4.0을 기반으로 구축되었습니다. 명령어, 스크립트, 워크플로우 작성자는 Windows PowerShell에서 새로운 Microsoft .NET Framework 4 클래스를 사용할 수 있으며, 여기에는 애플리케이션 호환성 및 배포, 관리형 확장성 프레임워크, 병렬 컴퓨팅, 네트워킹, Windows 통신 기초, Windows 워크플로우 기초 등의 기능이 포함되어 있습니다.
Windows 사전 설치 환경 지원
Windows PowerShell 3.0은 Windows 8용 Windows Preinstall Environment(Windows PE) 4.0의 선택 구성 요소입니다. Windows PE는 운영체제가 없는 컴퓨터를 부팅하고 Windows 설치를 준비하는 최소한의 운영체제입니다. Windows PE는 하드 드라이브 파티션 및 포맷, 디스크 이미지 복사, 네트워크 공유에서 Windows 설치를 시작하는 데 사용할 수 있습니다. Windows PowerShell 3.0은 Windows PE에서 배포, 진단, 복구 시나리오를 관리하는 데 사용할 수 있습니다.
분리된 세션들
Windows PowerShell 3.0부터는 New-PSSession cmdlet을 사용해 생성한 지속적 사용자 관리 세션("PSSessions")이 원격 컴퓨터에 저장됩니다. 이들은 더 이상 생성된 세션에 의존하지 않습니다.
이제 세션에서 실행 중인 명령어를 방해하지 않고 세션에서 연결을 끊을 수 있습니다. 세션을 종료하고 컴퓨터를 종료할 수 있습니다. 나중에 같은 컴퓨터나 다른 컴퓨터에서 다른 세션에서 다시 연결할 수 있습니다.
cmdlet의 Get-PSSessionComputerName 매개변수는 이제 컴퓨터에 연결된 모든 사용자의 세션을 가져옵니다. 설령 세션이 다른 컴퓨터에서 시작되었더라도 말이죠. 세션에 접속해서 명령 결과를 받고, 새 명령을 시작한 뒤 세션에서 분리할 수 있습니다.
Disconnected Sessions 기능을 Disconnect-PSSession지원하기 위해 , , Connect-PSSession, Receive-PSSession, 등 새로운 cmdlet이 추가되었으며, PSSessions를 관리하는 cmdlet에는 InDisconnectedSession 파라 Invoke-Command 미터와 같은 새로운 매개변수가 추가되었습니다.
연결 해제 기능은 연결의 시작(클라이언트)와 종료('서버') 두 쪽 모두의 컴퓨터가 Windows PowerShell 3.0을 실행할 때만 지원됩니다.
견고한 세션 연결성
Windows PowerShell 3.0은 클라이언트와 서버 간의 예상치 못한 연결 손실을 감지하고 연결을 재구축하고 자동으로 실행을 재개하려고 시도합니다. 클라이언트-서버 연결이 정해진 시간 내에 재설정되지 않으면 사용자에게 통보가 전달되고 세션이 종료됩니다. 재연결을 시도하는 동안 Windows PowerShell은 사용자에게 지속적인 피드백을 제공합니다.
연결이 끊긴 세션이 InvokeCommand를 사용해 시작되었다면, Windows PowerShell은 연결이 끊긴 세션에 대해 작업을 생성하여 재연결과 실행 재개를 쉽게 합니다.
이 기능들은 보다 신뢰할 수 있고 복구 가능한 원격 방문 경험을 제공하며, 사용자가 워크플로우와 같이 견고한 세션이 필요한 장기 실행 작업을 수행할 수 있게 합니다.
업데이트 가능한 도움말 시스템
이제 모듈 내 명령어렛에 대한 최신 도움말 파일을 다운로드할 수 있습니다. 이 명령어렛은 Update-Help 최신 도움말 파일을 식별하고, 인터넷에서 다운로드한 뒤 압축 해제, 검증, 모듈에 맞는 언어별 디렉터리에 설치합니다.
업데이트된 도움말 파일을 사용하려면 .를 입력 Get-Help하세요. Windows나 Windows PowerShell을 재시작할 필요는 없습니다. $pshome 디렉터리 내 모듈에 대한 도움말을 업데이트하려면 Windows PowerShell에서 "관리자 권한으로 실행하기" 옵션을 선택하세요.
인터넷 접속이 어려운 사용자와 방화벽 뒤에 있는 사용자를 지원하기 위해, 새로운 Save-Help 명령어렛은 도움말 파일을 파일 공유 같은 파일 시스템 디렉터리로 다운로드합니다. 사용자는 이 cmdlet을 사용 Update-Help 해 파일 공유에서 업데이트된 도움말 파일을 받을 수 있습니다.
cmdlet을 Update-Help 사용해 지원되는 UI 문화의 모든 모듈 또는 특정 모듈의 도움말 파일을 업데이트할 수 있습니다. Windows PowerShell 프로필에 명령어를 넣 Update-Help 을 수도 있습니다.
기본적으로 Windows PowerShell은 모듈의 도움말 파일을 하루에 한 번 이상 다운로드하지 않습니다.
Windows 8 및 Windows Server 2012 모듈에는 도움말 파일이 포함되어 있지 않습니다. 최신 도움말 파일을 Update-Help다운로드하려면 . 자세한 내용은 매개변수 없이 입력 Get-Help 하거나 about_Updatable_Help를 참조하세요.
커미들렛의 도움말 파일이 컴퓨터에 설치되어 있지 않으면, Get-Help 이제 자동으로 생성된 도움말이 표시됩니다. 자동 생성된 도움말에는 명령어 문법과 cmdlet을 Update-Help 사용해 도움말 파일을 다운로드하는 방법도 포함되어 있습니다.
모든 모듈 저자는 자신의 모듈에 대해 Updated Help를 지원할 수 있습니다. 모듈에 도움말 파일을 포함시키고 Updatable Help를 사용해 업데이트하거나, 도움말 파일을 생략하고 Updatable Help를 사용해 설치할 수 있습니다. Updatable Help 지원에 대한 자세한 내용은 'Update Supportable Help'를 참조하세요.
향상된 온라인 도움말
Windows PowerShell 온라인 도움말은 모든 사용자에게 매우 유용한 자료이지만, 업데이트된 도움말 파일을 설치하지 않거나 설치할 수 없는 사용자에게는 특히 중요합니다.
Windows PowerShell cmdlet에 대한 온라인 도움을 받으려면 다음을 입력하세요:
Get-Help <cmdlet-name> -Online
Windows PowerShell은 기본 인터넷 브라우저에서 온라인 버전의 도움말 주제를 엽니다.
Windows PowerShell 3.0의 Get-Help 온라인 기능은 이제 더욱 강력해졌는데, 명령어 도움말 파일이 컴퓨터에 설치되어 있지 않아도 작동합니다. Get-Help -Online 기능은 HelpUri의 cmdlets 속성과 고급 함수에서 온라인 도움말 주제에 대한 URI를 얻습니다.
PS C:\>(Get-Command Get-ScheduledJob).HelpUri
https://go.microsoft.com/fwlink/?LinkID=223923
Windows PowerShell 3.0부터는 C# cmdlets 작성자들이 cmdlet 클래스에 HelpUri 속성을 생성하여 HelpUri 속성을 채울 수 있습니다. 고급 함수의 작성자는 CmdletBinding 속성에 HelpUri 속성을 정의할 수 있습니다. HelpUri 속성의 가치는 "http" 또는 "https"로 시작해야 합니다.
또한 XML 기반 cmdlet 도움말 파일의 첫 번째 관련 링크나 . 링크 지침은 함수에서 댓글 기반 도움말입니다.
온라인 지원 지원에 대한 자세한 정보는 ' 온라인 지원 서비스'를 참조하세요.
CIM 통합
Windows PowerShell 3.0은 시스템, 네트워크, 애플리케이션 및 서비스에 대한 관리 정보를 공통적으로 정의하여 이기종 시스템 간 관리 정보를 교환할 수 있도록 하는 공통 정보 모델(CIM)을 지원합니다. Windows PowerShell 3.0에서 CIM 지원, 신규 또는 기존 CIM 클래스를 기반으로 Windows PowerShell cmdlet을 작성할 수 있는 기능, cmdlet 정의 XML 파일 기반 명령어, CIM .NET Framework 지원 등이 포함됩니다. API, CIM 관리 커머릿, WMI 2.0 제공자들.
세션 구성 파일
Windows PowerShell 3.0부터는 파일을 사용해 맞춤 세션 구성을 설계할 수 있습니다. 새로운 세션 구성 파일은 세션 구성을 사용하는 세션의 환경을 결정할 수 있게 해줍니다. 어떤 모듈, 스크립트, 포맷 파일이 세션에 로드되는지, 사용자가 사용할 수 있는 cmdlet과 언어 요소, 실행할 수 있는 모듈과 스크립트, 볼 수 있는 변수 등이 포함됩니다.
사용자가 특정 모듈에서만 cmdlet을 실행할 수 있는 세션을 설계하거나, 사용자가 완전한 언어와 모든 모듈에 접근하며 고급 작업을 수행하는 스크립트에 접근할 수 있는 세션을 설계할 수 있습니다.
이전 버전의 Windows PowerShell에서는 이 수준의 제어가 C# 프로그램이나 복잡한 시작 스크립트를 작성할 수 있는 사람에게만 허용되었습니다. 이제 컴퓨터 내 관리자 그룹의 누구나 구성 파일을 통해 세션 구성을 맞춤 설정할 수 있습니다.
세션 구성 파일을 만들려면 New-PSSessionConfigurationFile cmdlet을 사용합니다. 세션 구성 파일을 세션 구성에 적용하려면 또는 'Set-PSSessionConfiguration cmdlet을 사용 Register-PSSessionConfiguration 하세요.
자세한 내용은 about_Session_Configuration_Files 와 New-PSSessionConfigurationFile를 참조하세요.
예약된 작업과 작업 스케줄러 통합
이제 Windows PowerShell 백그라운드 작업을 예약하고 Windows PowerShell과 Task Scheduler에서 관리할 수 있습니다.
Windows PowerShell 예약 작업은 Windows PowerShell 백그라운드 작업과 Task Scheduler 작업의 유용한 하이브리드입니다.
Windows PowerShell 백그라운드 작업처럼, 예약된 작업도 백그라운드에서 비동기적으로 실행됩니다.
완료된 예약된 작업 인스턴스는 와 Get-Job같은 Start-Job 작업 cmdlet을 사용하여 관리할 수 있습니다.
Task Scheduler 작업과 마찬가지로, 일정 작업을 일회성 또는 반복 일정으로 실행하거나 액션이나 이벤트에 대응할 수 있습니다. Task Scheduler에서 예약된 작업을 보고 관리하고, 필요에 따라 활성화하거나 비활성화하며, 실행하거나 템플릿으로 사용하고, 작업이 시작하는 조건을 설정할 수 있습니다.
또한, 예약된 작업에는 이를 관리할 수 있는 맞춤형 명령어 세트가 제공됩니다. 이 명령들은 예약된 작업을 생성, 편집, 관리, 비활성화, 다시 활성화하고, 예약된 작업 트리거를 생성하고, 예약된 작업 옵션을 설정할 수 있게 해줍니다.
예정된 일자리에 대한 자세한 정보는 about_Scheduled_Jobs를 참조하세요.
Windows PowerShell 언어 개선
Windows PowerShell 3.0은 언어를 더 단순하고 사용하기 쉽게 만들며 흔한 오류를 피하기 위해 설계된 많은 기능을 포함하고 있습니다. 개선된 사항에는 속성 열거, 스칼라 객체의 카운트 및 길이 속성, 새로운 리디렉션 연산자, $Using 범위 수정자, PSItem 자동 변수, 유연한 스크립트 서식, 변수 속성, 단순화된 속성 인자, 숫자 명령어 이름, Stop-Parsing 연산자, 향상된 배열 스플래팅, 새로운 비트 연산자, 순서 사전, PSCustomObject 캐스팅, 그리고 향상된 주석 기반 도움말 등이 포함됩니다.
새로운 핵심 명령어
Windows PowerShell 설치에는 예약 작업, 분리된 세션, CIM 통합, 업데이트 가능한 도움말 시스템 관리 명령어 등 새로운 cmdlet이 추가되었습니다.
- CimCmdlets
- Get-CimAssociatedInstance
- Get-CimClass
- Get-CimInstance
- Get-CimSession
- Invoke-CimMethod
- New-CimInstance
- New-CimSession
- New-CimSessionOption
- Register-CimIndicationEvent
- Remove-CimInstance
- Remove-CimSession
- Set-CimInstance
- Microsoft.PowerShell.Core
- Connect-PSSession
- Disconnect-PSSession
- New-PSSessionConfigurationFile
- New-PSTransportOption
- Receive-PSSession
- Resume-Job
- Save-Help
- Suspend-Job
- Test-PSSessionConfigurationFile
- Update-Help
- Microsoft.PowerShell.Diagnostics
- New-WinEvent
- Microsoft.PowerShell.Management
- Get-ControlPanelItem
- 컴퓨터 이름 바꾸기
- Show-ControlPanelItem
- Microsoft.PowerShell.Utility
- ConvertFrom-Json
- ConvertTo-Json
- Get-TypeData
- Invoke-RestMethod
- Invoke-WebRequest
- Remove-TypeData
- Show-Command
- Unblock-File
- PSSchescheduleedJob(예정된 직무)
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob
- PSWorkflow
- New-PSWorkflowExecutionOption
- New-PSWorkflowSession
- PSWorkflowUtility
- Invoke-AsWorkflow
- 이세
- Get-IseSnippet
- Import-IseSnippet
- New-IseSnippet
기존 핵심 명령어 및 제공자의 개선
Windows PowerShell 3.0은 기존 cmdlet에 대한 새로운 기능과 단순화된 문법, 그리고 다음 cmdlet에 대한 새로운 매개변수를 포함합니다: Computer cmdlet, CSV cmdlet, Get-ChildItem, Get-Command, Get-Content, Get-History, Measure-Object, Security cmdlet, Select-Object, Select-String, Split-Path, Start-Process, Tee-Object, Test-Connection, Add-Member, WMI cmdlet.
Windows PowerShell 제공자들도 크게 개선되었으며, 웹 호스팅용 보안 소켓 계층(SSL) 인증서 관리를 위한 인증서 제공자 지원, 자격 증명, 영구 네트워크 드라이브, 파일 시스템 드라이브 내 대체 데이터 스트림 지원이 포함되었습니다.
원격 모듈 가져오기 및 발견
Windows PowerShell 3.0은 원격 컴퓨터에서 모듈 탐색, 가져오기 및 암묵적 원격 제어 기능을 확장합니다. 모듈 cmdlet은 원격 컴퓨터에서 모듈을 가져와 Windows PowerShell 원격 방문을 통해 모듈을 원격 또는 로컬 컴퓨터로 가져옵니다. 새로운 CIM 세션 지원은 원격 컴퓨터에서 암묵적으로 실행되는 명령을 로컬 컴퓨터에 가져오는 CIM과 WMI를 사용하여 비윈도우 컴퓨터를 관리할 수 있게 합니다.
자세한 내용은 'cmdlet'과 Import-Module 관련 도움말 주제 Get-Module 를 참고하세요.
향상된 탭 완성
Windows PowerShell 콘솔의 탭 완성은 이제 cmdlet, 매개변수, 매개변수 값, 열거, .NET Frameworks 타입, COM 객체, 숨겨진 디렉터리 등의 이름을 완성합니다. 탭 완성 기능은 새로운 파서와 추상 문법 트리를 기반으로 완전히 재작성되어 메모리 내 파싱 트리와 중간 탭 완성 등 더 많은 시나리오를 지원합니다.
모듈 자동 로딩
cmdlet은 Get-Command 현재 세션에 모듈을 가져오지 않더라도 컴퓨터에 설치된 모든 모듈의 모든 cmdlet과 함수를 받습니다.
필요한 커들렛을 받으면 모듈을 가져오지 않고도 바로 사용할 수 있습니다. 이제 Windows PowerShell 모듈은 모듈 내 어떤 cmdlet을 사용해도 자동으로 불러옵니다. 더 이상 모듈을 찾아서 임포트할 필요가 없습니다.
모듈의 자동 가져오기는 명령어의 cmdlet을 사용하여 트리거되며, 와일드카드 Get-Help 가 없는 cmdlet에 대해서는 실행 Get-Command 됩니다.
$PSModuleAutoLoadingPreference 선호도 변수를 사용해 모듈의 자동 가져오기를 활성화, 비활성화, 구성할 수 있습니다.
자세한 내용은 about_Modules, about_Preference_Variables, 그리고 cmdlets의 Get-CommandImport-Module 도움말 주제를 참고하세요.
모듈 경험 개선
Windows PowerShell 3.0은 다음과 같은 새로운 기능을 포함한 모듈에 고급 기능 지원을 제공합니다.
- 개별 모듈에 대한 모듈 로깅(LogPipelineExecutionDetails) 및 새로운 "Turn on Module Logging" 그룹 정책 설정
- 모듈 매니페스트의 값을 노출하는 확장 모듈 객체들
- 모든 유형의 명령어를 결합하는 중첩 모듈을 포함한 모듈의 새로운 ExportedCommands 속성
- Path와 ListAvailable 매개변수를 동일 명령어 내에서 허용하는 등 사용 가능한(임포트되지 않은) 모듈 탐색 개선
- 모듈 매니페스트에 이름 충돌을 방지하는 새로운 DefaultCommandPrefix 키가 모듈 코드를 변경하지 않습니다.
- 버전 및 GUID가 포함된 완전 자격 필수 모듈과 필수 모듈의 자동 가져오기 등 향상된 모듈 요구사항
- 명령어의 조용하고 유선형 작동
New-ModuleManifest. - 새로운 모듈 매개변수 #Requires
-
최소 버전과 필요 버전 매개변수를 모두 갖춘 향상된
Import-Modulecmdlet.
간소화된 명령 발견
세션에서 사용 가능한 명령을 찾기 위해 모든 모듈을 가져오지 않아도 됩니다. Windows PowerShell 3.0에서는 cmdlet이 Get-Command 설치된 모든 모듈의 명령을 받습니다. 그리고 명령어를 사용하면 그 명령을 내보내는 모듈이 자동으로 세션에 가져옵니다.
새로운 Show-Command 커미들렛은 초보자를 위해 특별히 설계되었습니다. 창에서 명령을 검색할 수 있습니다. 모든 명령어를 보거나 모듈별로 필터링할 수 있고, 버튼을 클릭해 모듈을 가져오고, 텍스트 박스와 드롭다운 리스트를 사용해 유효한 명령을 생성한 후, 창을 떠나지 않고 명령어를 복사하거나 실행할 수 있습니다.
개선된 로그, 진단, 그룹 정책 지원
Windows PowerShell 3.0은 명령어 및 모듈에 대한 로깅 및 추적 지원을 개선하여, Windows 내 Event Tracing 지원(ETW) 로그, 모듈의 편집 가능한 LogPipelineExecutionDetails 속성, 그리고 "Turn on Module Logging" 그룹 정책 설정을 포함합니다. 이제 로그 속성 표시를 통해 로그 세부 정보에서 매개변수 값을 얻을 수 있습니다.
포맷 및 출력 개선
새로운 형식 및 출력 개선은 모든 Windows PowerShell 사용자의 효율성을 향상시킵니다. 개선된 점은 모든 스트림의 출력 리디렉션, Format.ps1xml 파일 없이 동적으로 타입을 추가하는 향상된 Update-Type cmdlet, 출력에서 워드 랩, 커스텀 객체의 기본 서식 속성, PSCustomObject 타입, WMI 객체 및 이기종 객체의 향상된 서식, 메서드 오버로드 발견 지원이 포함됩니다.
향상된 콘솔 호스트 경험
Windows PowerShell 콘솔 호스트 프로그램은 기본적으로 단일 스레드 아파트를 포함한 새로운 기능을 갖추고 있습니다. 파일 탐색기의 새로운 "PowerShell로 실행하기" 옵션은 오른쪽 클릭만으로 제한 없는 세션에서 스크립트를 실행할 수 있게 해줍니다. 새로운 콘솔 호스트 실행 로치는 Windows PowerShell을 더 빠르게 시작하며, 새로운 글꼴로 익숙한 콘솔 창 경험을 개인화할 수 있습니다.
새로운 Cmdlet 및 호스팅 API
새로운 Cmdlet API와 호스팅 API는 공개 고급 구문 트리(AST) API, 파이프라인 페이지링, 중첩 파이프라인, 런스페이스 풀 탭 완료, Windows RT, Obsolete cmdlet 속성, 그리고 FunctionInfo 객체의 동사 및 명사 속성 API를 포함합니다.
성능 향상
Windows PowerShell의 성능 향상은 .NET Framework 4.의 동적 런타임 언어(DLR)를 기반으로 구축된 새로운 언어 파서와 함께 런타임 스크립트 컴파일, 엔진 신뢰성 향상, 그리고 특히 네트워크 공유 검색 시 성능을 향상시키는 알고리즘 Get-ChildItem 변경에서 나왔습니다.
RunA 및 공유 호스트 지원
Windows PowerShell 3.0은 RunAs와 공유 호스트 기능을 지원합니다.
Windows PowerShell 워크플로우를 위해 설계된 RunAs 기능은 세션 구성 사용자가 공유 사용자 계정의 권한을 가지고 실행되는 세션을 생성할 수 있게 합니다. 이로 인해 권한이 낮은 사용자도 관리자 권한으로 특정 명령과 스크립트를 실행할 수 있으며, 관리자 그룹에 하위 사용자 추가의 필요성을 줄입니다.
SharedHost 기능은 여러 컴퓨터에서 여러 사용자가 동시에 워크플로우 세션에 접속하여 워크플로우의 진행 상황을 모니터링할 수 있게 합니다. 사용자는 한 컴퓨터에서 워크플로우를 시작한 후 다른 컴퓨터에서 세션을 끊지 않고 다른 컴퓨터에서 워크플로우 세션에 연결할 수 있습니다. 사용자는 동일한 권한을 가지며 동일한 세션 구성을 사용해야 합니다. 자세한 내용은 Windows PowerShell 워크플로우 시작서의 "Running a Windows PowerShell Workflow"를 참조하세요.
특수 문자 처리 개선
Windows PowerShell 3.0이 특수 문자를 해석하고 올바르게 처리하는 능력을 향상시키기 위해, 경로 내 특수 문자를 처리하는 LiteralPath 매개변수는 Path 매개변수가 있는 거의 모든 명령어(새 Update-Help 명령어와 Save-Help cmdlet을 포함)에서 유효합니다. 파서는 또한 파일 이름과 경로의 백틱 문자(`)와 대괄호 처리를 개선하는 특수 로직을 포함하고 있습니다.
또한 참조하십시오
- about_Windows_PowerShell_5.0
- Windows PowerShell