Novos cenários e recursos no WMF 5.1New Scenarios and Features in WMF 5.1

Observação: essas informações são preliminares e estão sujeitas a alteração.Note: This information is preliminary and subject to change.

Edições do PowerShellPowerShell Editions

Da versão 5.1 em diante, o PowerShell está disponível nas edições diferentes que denotam diferentes conjuntos de recursos e compatibilidade de plataforma.Starting with version 5.1, PowerShell is available in different editions which denote varying feature sets and platform compatibility.

  • Desktop Edition: criada no .NET Framework e oferece compatibilidade com scripts e módulos destinados a versões do PowerShell em execução em edições de superfície completa do Windows, como Server Core e Área de Trabalho do Windows.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: criada no .NET Core e oferece compatibilidade com scripts e módulos destinados a versões do PowerShell executando em edições de superfície reduzida do Windows, como o Nano Server e Windows IoT.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.

Saiba mais sobre como usar as edições do PowerShellLearn more about using PowerShell Editions

Cmdlets de CatálogoCatalog Cmdlets

Dois novos cmdlets foram adicionados no módulo Microsoft.PowerShell.Security; eles geram e validam os arquivos de catálogo do 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 cria um arquivo de catálogo do Windows para o conjunto de arquivos e pastas.New-FileCatalog creates a Windows catalog file for set of folders and files. Este arquivo de catálogo contém hashes para todos os arquivos nos caminhos especificados.This catalog file contains hashes for all files in specified paths. Os usuários podem distribuir o conjunto de pastas juntamente com o arquivo de catálogo correspondente que representa essas pastas.Users can distribute the set of folders along with corresponding catalog file representing those folders. Essas informações são úteis para validar se as alterações foram feitas nas pastas desde a hora de criação do catálogo.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>]

Há suporte para as versões 1 e 2 do catálogo.Catalog versions 1 and 2 are supported. A versão 1 usa o algoritmo de hash SHA1 para criar hashes de arquivo; a versão 2 usa SHA256.Version 1 uses the SHA1 hashing algorithm to create file hashes; version 2 uses SHA256. Não há suporte para a versão 2 do catálogo no Windows Server 2008 R2 ou no Windows 7.Catalog version 2 is not supported on Windows Server 2008 R2 or Windows 7. Você deve usar a versão 2 do catálogo no Windows 8, no Windows Server 2012 e nos sistemas operacionais posteriores.You should use catalog version 2 on Windows 8, Windows Server 2012, and later operating systems.

Isso cria o arquivo de catálogo.This creates the catalog file.

Para verificar a integridade do arquivo de catálogo (Pester.cat, no exemplo acima), assine-o usando o cmdlet Set-AuthenticodeSignature.To verify the integrity of catalog file (Pester.cat in above example), sign it using Set-AuthenticodeSignature cmdlet.

Test-FileCatalogTest-FileCatalog


Test-FileCatalog valida o catálogo que representa um conjunto de pastas.Test-FileCatalog validates the catalog representing a set of folders.

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

Este cmdlet compara todos os hashes de arquivos e seus caminhos relativos encontrados no catálogo com aqueles no disco.This cmdlet compares all the files hashes and their relative paths found in catalog with ones on disk. Se detectar qualquer incompatibilidade entre os hashes e os caminhos de arquivo, o status será retornado como ValidationFailed.If it detects any mismatch between file hashes and paths it returns the status as ValidationFailed. Os usuários podem recuperar todas essas informações usando o parâmetro -Detailed.Users can retrieve all this information by using the -Detailed parameter. Ele também exibe o status da assinatura do catálogo na propriedade Signature, que é equivalente a chamar o cmdlet Get-AuthenticodeSignature no arquivo de catálogo.It also displays signing status of catalog in Signature property which is equivalent to calling Get-AuthenticodeSignature cmdlet on the catalog file. Os usuários também podem ignorar qualquer arquivo durante a validação usando o parâmetro -FilesToSkip.Users can also skip any file during validation by using the -FilesToSkip parameter.

Cache de análise do móduloModule Analysis Cache

Do WMF 5.1 em diante, o PowerShell fornece controle sobre o arquivo que é usado para cache de dados sobre um módulo, como os comandos que exporta.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.

Por padrão, esse cache é armazenado no arquivo ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache.By default, this cache is stored in the file ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache. O cache normalmente é lido na inicialização ao procurar um comando e é gravado em um thread em segundo plano em algum momento após a importação de um módulo.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.

Para alterar o local padrão do cache, defina a variável de ambiente $env:PSModuleAnalysisCachePath antes de iniciar o PowerShell.To change the default location of the cache, set the $env:PSModuleAnalysisCachePath environment variable before starting PowerShell. As alterações a esta variável de ambiente afetarão apenas processos filhos.Changes to this environment variable will only affect children processes. O valor deve nomear um caminho completo (incluindo nome do arquivo) em que o PowerShell tenha permissão para criar e gravar arquivos.The value should name a full path (including filename) that PowerShell has permission to create and write files. Para desabilitar o cache de arquivo, defina esse valor para um local inválido, por exemplo:To disable the file cache, set this value to an invalid location, for example:

$env:PSModuleAnalysisCachePath = 'nul'

Isso define o caminho para um dispositivo inválido.This sets the path to an invalid device. Se o PowerShell não conseguir gravar no caminho, nenhum erro será retornado, mas você poderá ver relatórios de erro usando um rastreamento: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 }

Ao gravar o cache, o PowerShell verificará se há módulos que não existem mais para evitar um cache desnecessariamente grande.When writing out the cache, PowerShell will check for modules that no longer exist to avoid an unnecessarily large cache. Às vezes, essas verificações não são desejáveis, o que, nesse caso, você pode desativá-las configurando:Sometimes these checks are not desirable, in which case you can turn them off by setting:

$env:PSDisableModuleAnalysisCacheCleanup = 1

Definir essa variável de ambiente entrará em vigor imediatamente no processo atual.Setting this environment variable will take effect immediately in the current process.

Especificando a versão do móduloSpecifying module version

No WMF 5.1, o using module comporta-se da mesma maneira que outras construções relacionadas ao módulo no PowerShell.In WMF 5.1, using module behaves the same way as other module-related constructions in PowerShell. Anteriormente, não era possível especificar uma versão de módulo específica; se houvesse várias versões presentes, isso resultaria em um erro.Previously, you had no way to specify a particular module version; if there were multiple versions present, this resulted in an error.

No WMF 5.1:In WMF 5.1:

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

  • Se houver várias versões do módulo, o PowerShell usará a mesma lógica de resolução que Import-Module e não retornará um erro – o mesmo comportamento que Import-Module e Import-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.

Melhorias no PesterImprovements to Pester

No WMF 5.1, a versão do Pester fornecida com o PowerShell foi atualizada do 3.3.5 para 3.4.0, com a adição da confirmação https://github.com/pester/Pester/pull/484/commits/3854ae8a1f215b39697ac6c2607baf42257b102e, que permite um melhor comportamento do Pester no Nano Server.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.

Você pode examinar as alterações feitas da versão 3.3.5 para a 3.4.0 inspecionando o arquivo ChangeLog.md file em: https://github.com/pester/Pester/blob/master/CHANGELOG.mdYou 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