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




Sumário