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