TÓPICO about_Windows_PowerShell_2.0 DESCRIÇÃO RESUMIDA Descreve os novos recursos incluídos no Windows PowerShell 2.0. DESCRIÇÃO LONGA O Windows PowerShell 2.0 inclui vários recursos que estendem seu uso, melhoram sua usabilidade, e permitem controlar e gerenciar ambientes baseados no Windows de modo mais fácil e abrangente. O Windows PowerShell 2.0 é compatível com versões anteriores. Os cmdlets, provedores, snap-ins, scripts, funções e perfis projetados para o Windows PowerShell 1.0 funcionam no Windows PowerShell 2.0 sem alterações. NOVOS RECURSOS O Windows PowerShell 2.0 inclui os novos recursos a seguir. Comunicação remota O Windows PowerShell 2.0 permite que você execute comandos em um ou vários computadores remotos com um único comando do Windows PowerShell. Você pode executar comandos individuais ou criar uma conexão persistente (uma sessão)para executar uma série de comandos relacionados. Você também pode iniciar uma sessão com um computador remoto de modo que os comandos digitados sejam executados diretamente no computador remoto. Os recursos de comunicação remota do Windows PowerShell foram incorporados no WinRM (Gerenciamento Remoto do Windows). O WinRM é a implementação do protocolo WS-Management da Microsoft, um protocolo de comunicação padrão compatível com firewall e baseado no SOAP. Os computadores remotos devem ter o Windows PowerShell 2.0, o Microsoft .NET Framework 2.0 e o serviço WinRM. Há suporte para os comandos remotos em todos os sistemas operacionais que podem executar o Windows PowerShell. O usuário atual deve ter permissão para executar comandos nos computadores remotos. Para obter mais informações, consulte about_Remote_Requirements. Para oferecer suporte à comunicação remota, os cmdlets Invoke-Command, Enter-PSSession, e Exit-PSSession foram adicionados, juntamente com outros cmdlets que contêm a palavra PSSession. Esses cmdlets permitem que você crie e gerencie conexões persistentes. O parâmetro ComputerName também foi adicionado a vários cmdlets, incluindo Get-Process, Get-Service e Get-Eventlog. Esse parâmetro permite obter informações sobre computadores remotos. Esses cmdlets usam métodos do .NET Framework para obter seus dados. Assim, eles não dependerão da comunicação remota do Windows PowerShell. Eles não requerem nenhum novo programa ou configuração. Para obter mais informações, consulte a Ajuda de cada cmdlet. Para obter mais informações sobre comandos remotos, consulte about_Remote e about_Remote_FAQ. Para obter mais informações sobre sessões, consulte about_PSSessions. Windows PowerShell ISE O Windows PowerShell 2.0 inclui o Windows PowerShell ISE (Integrated Scripting Environment), um aplicativo host que permite a execução de comandos, e a criação, gravação, teste e depuração de scripts em um ambiente gráfico, codificado por cor e baseado em Unicode. O Windows PowerShell ISE requer o Microsoft .NET Framework 3.0 ou posterior. O Windows PowerShell ISE inclui: - O painel Comando, que permite a execução de comandos interativos da mesma maneira que você faria no console do Windows PowerShell. Basta digitar um comando e pressionar ENTER. A saída aparecerá no painel Saída. - O painel Script, que permite redigir, editar, depurar e executar funções e scripts. - Várias guias, cada uma com seu próprio painel Comando e Script, que permitem a você trabalhar em uma ou várias tarefas de forma independente. O Windows PowerShell ISE foi projetado para usuários novatos e avançados. Trabalhos em segundo plano Os trabalhos em segundo plano são comandos executados de forma assíncrona. Quando você executar um trabalho em segundo plano, o prompt de comando será retornado imediatamente, mesmo se o comando ainda estiver em execução. Use o recurso de trabalho em segundo plano para executar um comando complexo em segundo plano, a fim de que você possa usar a sessão para outro trabalho enquanto o comando estiver sendo executado. Você pode executar um trabalho em segundo plano em um computador local ou remoto e salvar os resultados no computador local ou remoto. Para executar um trabalho remotamente, use o cmdlet Invoke-Command. O Windows PowerShell inclui um conjunto de cmdlets que contêm a palavra Job (os cmdlets Job). Use-os para criar, iniciar, gerenciar e excluir trabalhos em segundo plano e para obter os resultados de um trabalho em segundo plano. Para obter uma lista dos cmdlets job, digite o seguinte comando: get-command *-job Para obter mais informações sobre trabalhos em segundo plano, consulte about_Jobs. Depurador de Scripts O Windows PowerShell 2.0 inclui um depurador baseado em cmdlet para scripts e funções. Uma API pública completamente documentada oferece suporte ao depurador. Você pode usá-la para compilar seu próprio depurador ou para personalizá-lo ou estendê-lo. Os cmdlets do depurador permitem que você defina pontos de interrupção em linhas, colunas, variáveis e comandos. Esses cmdlets permitem que você gerencie os pontos de interrupção e exiba a pilha de chamadas. Você pode criar pontos de interrupção condicionais e especificar ações personalizadas em um ponto de interrupção, como a execução de diagnóstico e o registro de scripts em log. Quando você atingir um ponto de interrupção, o Windows PowerShell suspenderá execução e iniciará o depurador. O depurador inclui um conjunto de comandos personalizados que permitem que você percorra o código. Você também pode executar os comandos padrão do Windows PowerShell para exibir os valores das variáveis e usar os cmdlets para investigar os resultados. Para obter mais informações sobre depuração, consulte about_Debuggers. Seção de dados Os scripts criados para Windows PowerShell 2.0 podem ter uma ou mais seções de dados que isolam os dados da lógica de script. Os dados na nova seção de dados restringe-se a um subconjunto especificado da linguagem de scripts do Windows PowerShell. No Windows PowerShell 2.0, a seção de dados é usada para oferecer suporte à internacionalização de scripts. Você pode usar a seção de dados para isolar e identificar a mensagem de usuário que será traduzida em vários idiomas da interface de usuário. Para obter mais informações, consulte about_Data_Sections. Internacionalização de scripts Os recursos de internacionalização de scripts do Windows PowerShell 2.0 permitem que você atenda melhor os usuários em todo o mundo. A internacionalização de scripts permite que os scripts e as funções exibam mensagens e o texto da Ajuda para os usuários em vários idiomas. Os recursos de internacionalização de scripts consultam a cultura da interface do usuário do sistema operacional ($PsUICulture) durante a execução e, em seguida, importam as cadeias de texto traduzidas para que você possa exibi-las para o usuário. A seção de dados permite armazenar cadeias de texto separadas do código, para que sejam facilmente identificadas. Um novo cmdlet, ConvertFrom-StringData, converte cadeias de texto em tabelas de hash semelhantes a um dicionário para facilitar a tradução. Para obter mais informações, consulte about_Script_International ization. Cmdlets de WMI O WMI (Instrumentação de Gerenciamento do Windows) do Windows PowerShell 2.0 foi aprimorado com a adição dos seguintes cmdlets: - Remove-WmiObject - Set-WmiInstance - Invoke-WmiMethod Novos parâmetros foram adicionados ao cmdlet Get-WmiObject. Agora, todos os cmdlets de WMI oferecem suporte aos seguintes parâmetros: - EnableAllPrivileges - Impersonation - Authentication - Authority Esses novos parâmetros oferecem um maior controle sobre a configuração de segurança das operações de WMI sem exigir que você trabalhe diretamente com os tipos na biblioteca de classes .NET Framework. Para obter uma lista dos cmdlets de WMI, digite o seguinte comando: get-help *wmi* Para obter ajuda sobre cada cmdlet, digite get-help seguido do nome do cmdlet. O cmdlet Get-WinEvent O cmdlet Get-WinEvent obtém eventos nos logs do Visualizador de Eventos e nos arquivos de log de eventos do ETW (Rastreamento de Eventos para Windows) em computadores locais e remotos. Ele pode obter eventos nos logs de eventos clássicos e nos logs de eventos do Windows incorporados no Windows Vista. Você pode usar Get-WinEvent para obter os objetos que representam logs de eventos, provedores de log de eventos e os eventos dos logs. Get-WinEvent permite que você combine os eventos de origens diferentes em um único comando. Ele oferece suporte a consultas avançadas em XPath, XML e no formato de tabela de hash. O cmdlet Get-WinEvent requer o Windows Vista ou o Windows Server 2008 e o Microsoft .NET Framework 3.5. O cmdlet Out-Gridview O cmdlet Out-GridView exibe os resultados de outros comandos em uma tabela interativa na qual você pode pesquisar, classificar, agrupar e filtrar os resultados. Por exemplo, você pode enviar os resultados de um comando Get-Process, Get-WmiObject, Get-WinEvent ou Get-Eventlog para Out-GridView e usar os recursos de tabela para examinar os dados. help out-gridview -full O cmdlet Add-Type O cmdlet Add-Type permite que você adicione tipos do .NET Framework ao Windows PowerShell a partir do código-fonte de outra linguagem do .NET Framework. Add-Type compila o código-fonte que cria os tipos e gera assemblies que contêm os novos tipos do .NET Framework. Em seguida, você pode usar os tipos do .NET Framework nos comandos do Windows PowerShell juntamente com os tipos de objeto padrão fornecidos pelo .NET Framework. Você também pode usar Add-Type para carregar assemblies na sua sessão e, assim, poder usar os tipos dos assemblies no Windows PowerShell. Add-Type permite que você desenvolva novos tipos do .NET Framework, a fim de usar os tipos do .NET Framework nas bibliotecas C# e acessar APIs do Win32. Para obter mais informações, consulte Add-Type. Notificação de eventos O Windows PowerShell 2.0 introduz a notificação de eventos. Os usuários podem registrar e assinar eventos, como eventos do Windows PowerShell, eventos de WMI ou eventos do .NET Framework. Além disso, eles podem escutar, encaminhar, e atuar nos eventos de gerenciamento e sistema de forma síncrona e assíncrona. Os desenvolvedores podem escrever aplicativos que usam a arquitetura de evento para receber notificação sobre as alterações de estado. Os usuários podem escrever scripts que assinam vários eventos e reagem ao conteúdo. O Windows PowerShell fornece cmdlets que criam novos eventos, obtém eventos e assinaturas de evento, fazem e cancelam registro de eventos, aguardam eventos e excluem eventos. Para obter mais informações sobre esses cmdlets, digite o comando a seguir: get-command *-event Módulos Os módulos do Windows PowerShell permitem que você divida e organize os scripts do Windows PowerShell em unidades independentes, autossuficientes e reutilizávéis. O código de um módulo é executado em seu próprio contexto. Por isso, ele não é adicionado a variáveis, funções, aliases e outros recursos da sessão, nem entra em conflito com eles nem os substitui. Você pode escrever, distribuir, combinar, compartilhar e reutilizar módulos para compilar scripts simples e aplicativos complexos. O Windows PowerShell 2.0 inclui cmdlets para adicionar, obter e remover módulos, e para exportar os membros do módulo. Para obter mais informações sobre os cmdlets relacionados aos módulos, digite o comando a seguir: get-command *-module* Transações O Windows PowerShell 2.0 inclui suporte a transações. As transações permitem que você desfaça uma série inteira de operações. Elas só estarão disponíveis para operações que oferecem suporte a transações. As transações foram projetadas para aplicativos que requerem atomicidade, consistência, isolamento e capacidade de recuperação, como bancos de dados e filas de mensagens. Os cmdlets e provedores que oferecem suporte a transações têm um novo parâmetro UseTransaction. Para iniciar uma operação em uma transação, use o cmdlet Start-Transaction. Depois, ao usar os cmdlets que executam a operação, use o parâmetro UseTransaction de cada cmdlet para que o comando faça parte de uma transação. Se qualquer comando da transação apresentar falha em qualquer ponto, use o cmdlet Rollback-Transaction para desfazer todos os comandos da transação. Se todos os comandos forem executados com êxito, use o cmdlet Commit- Transaction para tornar as ações do comando permanentes. O Windows PowerShell 2.0 inclui cmdlets para iniciar, usar, confirmar e reverter transações. Para obter informações sobre esses cmdlets, digite o comando a seguir: get-command *transaction* Alterações recentes do Windows PowerShell 1.0 -- O valor da entrada do Registro de PowerShellVersion em HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine foi alterado para 2.0. -- Foram adicionadas novos cmdlets e variáveis. Essas inclusões podem estar em conflito com variáveis e funções em perfis e scripts. -- O operador -IEQ executa uma comparação sem diferenciação de maiúsculas e minúsculas em caracteres. -- O cmdlet Get-Command obtém funções por padrão, além dos cmdlets. -- Os comandos nativos que geram uma interface de usuário não podem ser redirecionados para o cmdlet Out-Host. -- As novas palavras-chave de linguagem Begin, Process, End e Dynamic Param podem estar em conflito com palavras semelhantes usadas em scripts e funções. A interpretação dessas palavras como palavras-chave de linguagem pode resultar em erros de análise. -- A resolução de nomes do cmdlet foi alterada. No Windows PowerShell 1.0, um erro de tempo de execução foi gerado quando dois snap-ins do Windows PowerShell exportaram cmdlets com o mesmo nome. No Windows PowerShell 2.0, o último cmdlet adicionado à sessão é executado quando você digita o nome do comando. Para executar um comando que não é executado por padrão, qualifique o nome do cmdlet com o nome do snap-in ou módulo em que ele foi originado. -- Um nome de função seguido por '-?' obtém o tópico da Ajuda da função, caso haja algum incluído na função. -- A resolução de parâmetro dos métodos do Microsoft .Net Framework foi alterada. No Windows PowerShell 1.0, se você tiver chamado um método do .NET sobrecarregado que tenha mais de uma sintaxe de melhor ajuste, isso significa que nenhum erro foi relatado. No Windows PowerShell 2.0, um erro de ambiguidade é relatado. Além disso, no Windows PowerShell 2.0, o algoritmo para escolher o método de melhor ajuste foi revisado para minimizar o número de ambiguidades. -- Se você estiver enumerando uma coleção no pipeline e tentar modificá-la, o Windows PowerShell gerará uma exceção. Por exemplo, os comandos seguintes funcionariam no Windows PowerShell 1.0, mas apresentariam falha após a primeira iteração de pipeline no Windows PowerShell 2.0. $h = @{Name="Oi"; Value="Teste"} $h.keys | foreach-object {$h.remove($_)} Para evitar esse erro, crie uma subexpressão para o enumerador usando os caracteres $(). Por exemplo: $($h.keys) | foreach-object {$h.remove($_)} Para obter mais informações sobre o Windows PowerShell 2.0, visite os seguintes sites: -- Site do Windows PowerShell https://go.microsoft.com/fwlink/?LinkID=106031 -- Blog da equipe do Windows PowerShell: https://go.microsoft.com/fwlink/?LinkId=143696 CONSULTE TAMBÉM about_Data_Sections about_Debuggers about_Functions_Advanced about_Jobs about_Join about_PSSessions about_Remote about_Script_Internationalization about_Split