WMF 5.1의 새로운 시나리오 및 기능New Scenarios and Features in WMF 5.1

참고: 이 정보는 임시로 제공되며 변경될 수 있습니다.Note: This information is preliminary and subject to change.

PowerShell 버전PowerShell Editions

버전 5.1부터 PowerShell은 다양한 기능 집합 및 플랫폼 호환성을 나타내는 다양한 버전으로 사용 가능합니다.Starting with version 5.1, PowerShell is available in different editions which denote varying feature sets and platform compatibility.

  • Desktop Edition: .NET Framework에서 구축되며 Server Core 및 Windows 데스크톱과 같은 전체 설치 공간 버전의 Windows에서 실행되는 PowerShell 버전을 대상으로 하는 스크립트 및 모듈과의 호환성을 제공합니다.Desktop Edition: Built on .NET Framework and provides compatibility with scripts and modules targeting versions of PowerShell running on full footprint editions of Windows such as Server Core and Windows Desktop.
  • Core Edition: .NET Core에서 구축되며 Nano Server 및 Windows IoT와 같은 축소된 설치 공간 버전의 Windows에서 실행되는 PowerShell 버전을 대상으로 하는 스크립트 및 모듈과의 호환성을 제공합니다.Core Edition: Built on .NET Core and provides compatibility with scripts and modules targeting versions of PowerShell running on reduced footprint editions of Windows such as Nano Server and Windows IoT.

PowerShell 버전 사용 방법에 대한 자세한 정보Learn more about using PowerShell Editions

카탈로그 CmdletCatalog Cmdlets

두 개의 새로운 cmdlet을 Microsoft.PowerShell.Security 모듈에 추가했습니다. 이 cmdlet은 Windows 카탈로그 파일을 생성하고 유효성을 검사합니다.Two new cmdlets have been added in the Microsoft.PowerShell.Security module; these generate and validate Windows catalog files.

New-FileCatalogNew-FileCatalog


New-FileCatalog는 폴더 및 파일 집합에 대한 Windows 카탈로그 파일을 생성합니다.New-FileCatalog creates a Windows catalog file for set of folders and files. 이 카탈로그 파일에는 지정된 경로에 있는 모든 파일에 대한 해시가 포함됩니다.This catalog file contains hashes for all files in specified paths. 사용자는 폴더 집합을 이러한 폴더를 나타내는 해당 카탈로그 파일과 함께 배포할 수 있습니다.Users can distribute the set of folders along with corresponding catalog file representing those folders. 이 정보는 카탈로그 생성 시간 이후 폴더가 변경되었는지 확인하는 데 유용합니다.This information is useful to validate whether any changes have been made to the folders since catalog creation time.

New-FileCatalog [-CatalogFilePath] <string> [[-Path] <string[]>] [-CatalogVersion <int>] [-WhatIf] [-Confirm] [<CommonParameters>]

카탈로그 버전 1과 2가 지원됩니다.Catalog versions 1 and 2 are supported. 버전 1은 SHA1 해시 알고리즘을 사용하여 파일 해시를 만들고 버전 2는 SHA256을 사용합니다.Version 1 uses the SHA1 hashing algorithm to create file hashes; version 2 uses SHA256. Windows Server 2008 R2 또는 Windows 7에서는 카탈로그 버전 2가 지원되지 않습니다.Catalog version 2 is not supported on Windows Server 2008 R2 or Windows 7. Windows 8, Windows Server 2012 및 이후 운영 체제에서는 카탈로그 버전 2를 사용해야 합니다.You should use catalog version 2 on Windows 8, Windows Server 2012, and later operating systems.

이 cmdlet은 카탈로그 파일을 만듭니다.This creates the catalog file.

카탈로그 파일(위 예에서는 Pester.cat)의 무결성을 확인하려면 Set-authenticodesignature cmdlet을 사용하여 카탈로그 파일에 서명합니다.To verify the integrity of catalog file (Pester.cat in above example), sign it using Set-AuthenticodeSignature cmdlet.

Test-FileCatalogTest-FileCatalog


Test-FileCatalog는 폴더 집합을 나타내는 카탈로그의 유효성을 검사합니다.Test-FileCatalog validates the catalog representing a set of folders.

Test-FileCatalog [-CatalogFilePath] <string> [[-Path] <string[]>] [-Detailed] [-FilesToSkip <string[]>] [-WhatIf] [-Confirm] [<CommonParameters>]

이 cmdlet은 카탈로그에서 찾은 모든 파일 해시 및 해당 상대 경로를 디스크의 파일 해시 및 상대 경로와 비교합니다.This cmdlet compares all the files hashes and their relative paths found in catalog with ones on disk. 파일 해시 및 경로 간의 불일치를 발견하면 ValidationFailed와 같은 상태를 반환합니다.If it detects any mismatch between file hashes and paths it returns the status as ValidationFailed. 사용자는 -Detailed 매개 변수를 사용하여 이 모든 정보를 검색할 수 있습니다.Users can retrieve all this information by using the -Detailed parameter. 또한 이 cmdlet은 카탈로그 파일에서 Get-AuthenticodeSignature cmdlet을 호출할 때와 동일한 Signature 속성에 카탈로그의 서명 상태를 표시합니다.It also displays signing status of catalog in Signature property which is equivalent to calling Get-AuthenticodeSignature cmdlet on the catalog file. 사용자는 -FilesToSkip 매개 변수를 사용하여 유효성 검사 시 파일을 건너뛸 수도 있습니다.Users can also skip any file during validation by using the -FilesToSkip parameter.

모듈 분석 캐시Module Analysis Cache

WMF 5.1부터 PowerShell에서는 내보내는 명령과 같은 모듈에 대한 데이터를 캐시하는 데 사용되는 파일을 제어할 수 있습니다.Starting with WMF 5.1, PowerShell provides control over the file that is used to cache data about a module, such as the commands it exports.

기본적으로 이 캐시 파일은 ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache 파일에 저장됩니다.By default, this cache is stored in the file ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache. 일반적으로 이 캐시는 시작 시 명령을 검색할 때 읽으며 모듈을 가져오고 잠시 후에 백그라운드 스레드에서 기록됩니다.The cache is typically read at startup while searching for a command and is written on a background thread sometime after a module is imported.

캐시의 기본 위치를 변경하려면 PowerShell을 시작하기 전에 $env:PSModuleAnalysisCachePath 환경 변수를 설정합니다.To change the default location of the cache, set the $env:PSModuleAnalysisCachePath environment variable before starting PowerShell. 이 환경 변수의 변경 내용은 자식 프로세스에만 적용됩니다.Changes to this environment variable will only affect children processes. PowerShell이 파일을 만들고 쓸 수 있는 전체 경로(파일 이름 포함)를 값으로 지정해야 합니다.The value should name a full path (including filename) that PowerShell has permission to create and write files. 파일 캐시를 사용하지 않도록 설정하려면 이 값을 다음과 같은 잘못된 위치로 설정합니다.To disable the file cache, set this value to an invalid location, for example:

$env:PSModuleAnalysisCachePath = 'nul'

이렇게 하면 잘못된 장치에 대한 경로가 설정됩니다.This sets the path to an invalid device. PowerShell에서 경로에 쓸 수 없는 경우 오류가 반환되지 않지만 추적 프로그램을 사용하여 오류 보고를 확인할 수 있습니다.If PowerShell can't write to the path, no error is returned, but you can see error reporting by using a tracer:

Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }

캐시를 쓸 때 PowerShell에서는 캐시가 불필요하게 커지지 않도록 더 이상 없는 모듈을 확인합니다.When writing out the cache, PowerShell will check for modules that no longer exist to avoid an unnecessarily large cache. 때로는 이러한 확인이 필요하지 않을 수도 있으며, 이 경우 다음을 설정하여 확인을 끌 수 있습니다.Sometimes these checks are not desirable, in which case you can turn them off by setting:

$env:PSDisableModuleAnalysisCacheCleanup = 1

이 환경 변수를 설정하면 현재 프로세스에 즉시 적용됩니다.Setting this environment variable will take effect immediately in the current process.

모듈 버전 지정Specifying module version

WMF 5.1에서 using module은 PowerShell에서 다른 모듈 관련 생성과 동일하게 동작합니다.In WMF 5.1, using module behaves the same way as other module-related constructions in PowerShell. 이전에는 특정 모듈 버전을 지정할 수 없었습니다. 따라서 여러 버전이 있는 경우 오류가 발생했습니다.Previously, you had no way to specify a particular module version; if there were multiple versions present, this resulted in an error.

WMF 5.1에서는 다음과 같습니다.In WMF 5.1:

예: using module @{ModuleName = 'PSReadLine'; RequiredVersion = '1.1'}Example: using module @{ModuleName = 'PSReadLine'; RequiredVersion = '1.1'}

  • 모듈의 여러 버전이 있는 경우 PowerShell에서는 Import-Module동일한 해결 논리를 사용하고 오류가 발생하지 않습니다. 동작은 Import-ModuleImport-DscResource와 동일합니다.If there are multiple versions of the module, PowerShell uses the same resolution logic as Import-Module and doesn't return an error--the same behavior as Import-Module and Import-DscResource.

Pester의 향상된 기능Improvements to Pester

WMF 5.1에서는 PowerShell과 함께 제공되는 Pester 버전이 3.3.5에서 3.4.0으로 업데이트되었고, Nano Server에서 Pester가 더 잘 동작할 수 있도록 커밋 https://github.com/pester/Pester/pull/484/commits/3854ae8a1f215b39697ac6c2607baf42257b102e가 추가되었습니다.In WMF 5.1, the version of Pester that ships with PowerShell has been updated from 3.3.5 to 3.4.0, with the addition of commit https://github.com/pester/Pester/pull/484/commits/3854ae8a1f215b39697ac6c2607baf42257b102e, which enables better behavior for Pester on Nano Server.

https://github.com/pester/Pester/blob/master/CHANGELOG.md에서 ChangeLog.md 파일을 검사하여 버전 3.3.5~3.4.0의 변경 내용을 검토할 수 있습니다.You can review the changes in versions 3.3.5 to 3.4.0 by inspecting the ChangeLog.md file at: https://github.com/pester/Pester/blob/master/CHANGELOG.md