PowerShell

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar
PowerShell
PowerShell Core 6.0 icon.png
PowerShell Core 7.1.5 com Windows Terminal.png
Captura de tela de uma sessão do PowerShell 7 no Windows Terminal
ParadigmaImperativo , pipeline , orientado a objetos , funcional e reflexivo
Projetado porJeffrey Snover , Bruce Payette, James Truher (et al.)
DesenvolvedorMicrosoft
Apareceu pela primeira vez14 de novembro de 2006 ; 15 anos atrás ( 2006-11-14 )
Versão estável
7.2.5 / 21 de junho de 2022 ; 11 dias atrás [1] ( 2022-06-21 )
Versão de visualização
v7.3.0-preview.3 / 21 de março de 2022 ; 3 meses atrás [2] ( 2022-03-21 )
Disciplina de digitaçãoForte , seguro , implícito e dinâmico
Linguagem de implementaçãoC#
Plataforma.INTERNET
SO
LicençaLicença MIT [3] (mas o componente Windows permanece proprietário )
Extensões de nome de arquivo
  • .ps1 (roteiro)
  • .ps1xml (documento XML)
  • .psc1 (arquivo de console)
  • .psd1 (arquivo de dados)
  • .psm1 (Módulo de script)
  • .pssc (arquivo de configuração de sessão)
  • .psrc (Arquivo de Capacidade de Função)
  • .cdxml (Documento XML de Definição de Cmdlet)
Local na rede Internetmicrosoft . com/ powershell
Influenciado por
Python , Ksh , Perl , C# , CL , DCL , SQL , Tcl , Tk , [4] Chef , Puppet

O PowerShell é um programa de gerenciamento de configuração e automação de tarefas da Microsoft , que consiste em um shell de linha de comando e a linguagem de script associada . Inicialmente um componente do Windows apenas, conhecido como Windows PowerShell , foi tornado de código aberto e multiplataforma em 18 de agosto de 2016 com a introdução do PowerShell Core . [5] O primeiro é construído no .NET Framework , o último no .NET Core .

No PowerShell, as tarefas administrativas geralmente são executadas por meio de cmdlets (pronuncia -se command-lets ), que são classes .NET especializadas que implementam uma operação específica. Eles funcionam acessando dados em diferentes armazenamentos de dados, como o sistema de arquivos ou o Registro do Windows , que são disponibilizados ao PowerShell por meio de provedores . Desenvolvedores de terceiros podem adicionar cmdlets e provedores ao PowerShell. [6] [7] Cmdlets podem ser usados ​​por scripts, que por sua vez podem ser empacotados em módulos. Os cmdlets funcionam em conjunto com a API .NET .

O suporte do PowerShell para .NET Remoting , WS-Management , CIM e SSH permite que os administradores executem tarefas administrativas em sistemas Windows locais e remotos. O PowerShell também fornece uma API de hospedagem com a qual o tempo de execução do PowerShell pode ser incorporado a outros aplicativos. Esses aplicativos podem usar a funcionalidade do PowerShell para implementar determinadas operações, incluindo aquelas expostas por meio da interface gráfica . Esse recurso foi usado pelo Microsoft Exchange Server 2007 para expor sua funcionalidade de gerenciamento como cmdlets e provedores do PowerShell e implementar as ferramentas de gerenciamento gráfico como hosts do PowerShell que invocam os cmdlets necessários.[6] [8] Outros aplicativos da Microsoft, incluindo o Microsoft SQL Server 2008 , também expõem sua interface de gerenciamento por meio de cmdlets do PowerShell. [9]

O PowerShell inclui sua própria ajuda extensa e baseada em console (semelhante a páginas man em shells Unix ) acessível por meio do Get-Helpcmdlet. O conteúdo atualizado da ajuda local pode ser recuperado da Internet por meio do Update-Helpcmdlet. Alternativamente, a ajuda da web pode ser adquirida caso a caso através da -onlinemudança para Get-Help.

Plano de fundo

Plano de fundo

O interpretador de linha de comando (CLI) tem sido uma parte inseparável da maioria dos sistemas operacionais da Microsoft . O MS-DOS e o Xenix dependiam quase exclusivamente da CLI. (O MS-DOS 5 veio com um DOS Shell complementar .) A família Windows 9x veio com COMMAND.COMo , o ambiente de linha de comando do MS-DOS. As famílias Windows NT e Windows CE , no entanto, vieram com uma novidade cmd.exeque apresentava fortes semelhanças com o COMMAND.COM. Ambos os ambientes suportam alguns comandos internos básicos e uma linguagem de script primitiva ( arquivos em lote ), que pode ser usada para automatizar várias tarefas. No entanto, eles não podem automatizar todas as facetas do Windowsinterface gráfica do usuário (GUI) porque os equivalentes de linha de comando das operações são limitados e a linguagem de script é elementar.

A Microsoft tentou resolver algumas dessas deficiências introduzindo o Windows Script Host em 1998 com o Windows 98 e seu host baseado em linha de comando, cscript.exe. Ele se integra ao mecanismo Active Script e permite que scripts sejam escritos em linguagens compatíveis, como JScript e VBScript , aproveitando as APIs expostas por aplicativos por meio do modelo de objeto componente ( COM ). No entanto, ele tem suas próprias deficiências: sua documentação não é muito acessível e rapidamente ganhou reputação como um vetor de vulnerabilidade do sistema após vários vírus de computador de alto perfilexplorou deficiências em suas disposições de segurança. Diferentes versões do Windows forneciam vários interpretadores de linha de comando para fins especiais (como netsh e WMIC ) com seus próprios conjuntos de comandos, mas eles não eram interoperáveis. O Windows Server 2003 tentou melhorar ainda mais a experiência da linha de comando, mas o suporte a scripts ainda era insatisfatório. [10]

Kermit

No final da década de 1990, a Intel procurou a Microsoft pedindo ajuda para tornar o Windows, que rodava em CPUs Intel, uma plataforma mais apropriada para apoiar o desenvolvimento de futuras CPUs Intel. Na época, o desenvolvimento da CPU Intel era realizado em computadores Sun Microsystems que executavam Solaris (uma variante do Unix ) em CPUs de arquitetura RISC . A capacidade de executar muitos scripts de automação KornShell da Intel no Windows foi identificada como um recurso importante. Internamente, a Microsoft iniciou um esforço para criar uma porta Windows do Korn Shell, que recebeu o codinome Kermit. [11] A Intel finalmente migrou para um Linuxplataforma de desenvolvimento baseada em processadores Intel, tornando o projeto Kermit redundante. No entanto, com uma equipe totalmente financiada, o gerente de programas da Microsoft, Jeffrey Snover , percebeu que havia uma oportunidade de criar uma solução de propósito geral para o problema de automação administrativa da Microsoft.

Mônada

Em 2002, a Microsoft começou a desenvolver uma nova abordagem para gerenciamento de linha de comando, incluindo uma CLI chamada Monad (também conhecida como Microsoft Shell ou MSH). As idéias por trás dele foram publicadas em agosto de 2002 em um white paper chamado "Monad Manifesto" por seu arquiteto-chefe, Jeffrey Snover . [12] Em uma entrevista de 2017, Snover explica a gênese do PowerShell, dizendo que ele estava tentando disponibilizar ferramentas Unix no Windows, o que não funcionou devido a " diferenças arquiteturais principais entre Windows e Linux ". Especificamente, ele observou que o Linux considera tudo um arquivo de texto ASCII , enquanto o Windows considera tudo uma " APIque retorna dados estruturados". Eles eram fundamentalmente incompatíveis, o que o levou a adotar uma abordagem diferente. [13]

O Monad deveria ser uma nova CLI extensível com um novo design capaz de automatizar uma série de tarefas administrativas principais. A Microsoft demonstrou pela primeira vez o Monad publicamente na Conferência de Desenvolvimento Profissional em Los Angeles em outubro de 2003. Alguns meses depois, eles abriram o beta privado, que acabou levando a um beta público. A Microsoft publicou a primeira versão beta pública do Monad em 17 de junho de 2005 e o Beta 2 em 11 de setembro de 2005 e o Beta 3 em 10 de janeiro de 2006.

PowerShell

Em 25 de abril de 2006, não muito depois do anúncio inicial do Monad, a Microsoft anunciou que o Monad havia sido renomeado para Windows PowerShell , posicionando-o como uma parte significativa de suas ofertas de tecnologia de gerenciamento. [14] O Release Candidate (RC) 1 do PowerShell foi lançado ao mesmo tempo. Um aspecto significativo da mudança de nome e do RC foi que este agora era um componente do Windows, em vez de um mero complemento.

O Release Candidate 2 do PowerShell versão 1 foi lançado em 26 de setembro de 2006, com lançamento final na Web em 14 de novembro de 2006. O PowerShell para versões anteriores do Windows foi lançado em 30 de janeiro de 2007. [15] O desenvolvimento do PowerShell v2.0 começou antes do PowerShell v1 .0 enviado. Durante o desenvolvimento, a Microsoft enviou três previews de tecnologia da comunidade (CTP) . A Microsoft disponibilizou esses lançamentos ao público. A última versão CTP do Windows PowerShell v2.0 foi disponibilizada em dezembro de 2008.

PowerShell para Linux 6.0 Alpha 9 no Ubuntu 14.04 x64

O PowerShell v2.0 foi concluído e lançado para fabricação em agosto de 2009, como parte integrante do Windows 7 e do Windows Server 2008 R2. As versões do PowerShell para Windows XP, Windows Server 2003, Windows Vista e Windows Server 2008 foram lançadas em outubro de 2009 e estão disponíveis para download para plataformas de 32 e 64 bits. [16] Em uma edição de outubro de 2009 da TechNet Magazine , a Microsoft chamou a proficiência com o PowerShell "a habilidade mais importante que um administrador do Windows precisará nos próximos anos". [17]

O Windows 10 enviou uma estrutura de teste para o PowerShell. [18]

Em 18 de agosto de 2016, a Microsoft anunciou [19] que havia tornado o PowerShell open-source e multiplataforma com suporte para Windows, macOS , CentOS e Ubuntu . [5] O código fonte foi publicado no GitHub . [20] A mudança para o código aberto criou uma segunda encarnação do PowerShell chamada "PowerShell Core", que é executada no .NET Core . Ele é diferente do "Windows PowerShell", que é executado no .NET Framework completo . [21] A partir da versão 5.1, o PowerShell Core é fornecido com o Windows Server 2016 Nano Server . [22] [23]

Projeto

Uma tática de design importante para o PowerShell era aproveitar o grande número de APIs que já existiam no Windows, Windows Management Instrumentation, .NET Framework e outros softwares. Os cmdlets do PowerShell “envolvem” a funcionalidade existente. A intenção com essa tática é fornecer uma interface amigável e mais consistente entre os administradores e uma ampla gama de funcionalidades subjacentes. Com o PowerShell, um administrador não precisa conhecer .NET, WMI ou codificação de API de baixo nível e, em vez disso, pode se concentrar no uso dos cmdlets expostos pelo PowerShell. A esse respeito, o PowerShell cria poucas funcionalidades novas, concentrando-se em tornar a funcionalidade existente mais acessível a um público específico. [24]

Gramática

Os desenvolvedores do PowerShell basearam a gramática central da ferramenta na do POSIX 1003.2 KornShell . [25]

No entanto, a linguagem do PowerShell também foi influenciada por PHP , Perl e muitas outras linguagens existentes. [26]

Comandos nomeados

O Windows PowerShell pode executar quatro tipos de comandos nomeados: [27]

  • cmdlets ( programas .NET Framework projetados para interagir com o PowerShell)
  • Scripts do PowerShell (arquivos com sufixo .ps1)
  • Funções do PowerShell
  • Programas executáveis ​​autônomos

Se um comando for um programa executável autônomo, o PowerShell o iniciará em um processo separado ; se for um cmdlet, ele será executado no processo do PowerShell. O PowerShell fornece uma interface de linha de comando interativa , onde os comandos podem ser inseridos e sua saída exibida. A interface do usuário oferece preenchimento de guia personalizável . O PowerShell permite a criação de aliases para cmdlets, que o PowerShell traduz textualmente em invocações dos comandos originais. O PowerShell oferece suporte a parâmetros nomeados e posicionaispara comandos. Ao executar um cmdlet, o trabalho de vincular o valor do argumento ao parâmetro é feito pelo próprio PowerShell, mas para executáveis ​​externos, os argumentos são analisados ​​pelo executável externo independentemente da interpretação do PowerShell. [28]

Sistema de tipo estendido

O PowerShell Extended Type System ( ETS ) é baseado no sistema de tipos .NET, mas com semântica estendida (por exemplo, propertySets e extensibilidade de terceiros). Por exemplo, ele permite a criação de diferentes exibições de objetos expondo apenas um subconjunto dos campos de dados, propriedades e métodos, bem como especificando formatação personalizada e comportamento de classificação. Essas visualizações são mapeadas para o objeto original usando arquivos de configuração baseados em XML . [29]

Cmdlets

Cmdlets são comandos especializados no ambiente PowerShell que implementam funções específicas. Esses são os comandos nativos na pilha do PowerShell. Os cmdlets seguem um padrão de nomenclatura Verb - Noun , como Get-ChildItem , o que o torna um código autodocumentado . [30] Os cmdlets produzem seus resultados como objetos e também podem receber objetos como entrada, tornando-os adequados para uso como destinatários em um pipeline. Se um cmdlet gerar vários objetos, cada objeto da coleção será transmitido por todo o pipeline antes que o próximo objeto seja processado. [30]

Cmdlets são classes .NET especializadas , que o tempo de execução do PowerShell instancia e invoca em tempo de execução . Os cmdlets derivam de Cmdletou de PSCmdlet, sendo o último usado quando o cmdlet precisa interagir com o tempo de execução do PowerShell. [30] Essas classes base especificam determinados métodos – BeginProcessing()e ProcessRecord()EndProcessing()que a implementação do cmdlet substitui para fornecer a funcionalidade. Sempre que um cmdlet é executado, o PowerShell invoca esses métodos em sequência, ProcessRecord()sendo chamado se receber entrada de pipeline. [31] Se uma coleção de objetos é canalizada, o método é invocado para cada objeto na coleção. A classe que implementa o cmdlet deve ter um .NETatributoCmdletAttribute– que especifica o verbo e o substantivo que compõem o nome do cmdlet. Verbos comuns são fornecidos como um enum . [32] [33]

Se um cmdlet receber entrada de pipeline ou entrada de parâmetro de linha de comando, deve haver uma propriedade correspondente na classe, com uma implementação de modificador . O PowerShell invoca o modificador com o valor do parâmetro ou a entrada do pipeline, que é salvo pela implementação do modificador nas variáveis ​​de classe. Esses valores são então referidos pelos métodos que implementam a funcionalidade. Propriedades que mapeiam para parâmetros de linha de comando são marcadas por ParameterAttribute[34] e são definidas antes da chamada para BeginProcessing(). Aqueles que mapeiam para entrada de pipeline também são flanqueados por ParameterAttribute, mas com o ValueFromPipelineparâmetro de atributo definido. [35]

A implementação dessas classes de cmdlet pode fazer referência a qualquer API .NET e pode estar em qualquer linguagem .NET . Além disso, o PowerShell disponibiliza determinadas APIs, como , que é usada para acessar funcionalidades específicas do PowerShell, como gravar objetos resultantes no pipeline. Os cmdlets podem usar APIs de acesso a dados .NET diretamente ou usar a infraestrutura PowerShell de provedores PowerShell , que tornam os armazenamentos de dados endereçáveis ​​usando caminhos exclusivos . Os armazenamentos de dados são expostos usando letras de unidade e hierarquias dentro delas, endereçadas como diretórios. O Windows PowerShell é fornecido com provedores para o sistema de arquivos , registroWriteObject(), o repositório de certificados , bem como os namespaces para aliases de comando, variáveis ​​e funções. [36] O Windows PowerShell também inclui vários cmdlets para gerenciar vários sistemas Windows , incluindo o sistema de arquivos ou usar a Instrumentação de Gerenciamento do Windows para controlar os componentes do Windows . Outros aplicativos podem registrar cmdlets com o PowerShell, permitindo assim gerenciá-los e, se incluirem algum armazenamento de dados (como um banco de dados), também podem adicionar provedores específicos. [ citação necessária ]

O número de cmdlets incluídos na instalação básica do PowerShell geralmente aumentou com cada versão:

Versão Cmdlets
Windows PowerShell 1.0 129 [37]
Windows PowerShell 2.0 632 [38]
Windows PowerShell 3.0 cerca de 1.000 [39]
Windows PowerShell 4.0 ?
Windows PowerShell 5.0 cerca de 1.300 [40]
Windows PowerShell 5.1 1586 [ carece de fontes ]
PowerShell Core 6.0 ?
Núcleo do PowerShell 6.1 ?
Núcleo do PowerShell 6.2 ?
PowerShell 7.0 1507 [ citação necessária ]
PowerShell 7.1 ?
PowerShell 7.2 ?

Os cmdlets podem ser adicionados ao shell por meio de snap-ins (descontinuados na v2) e módulos; os usuários não estão limitados aos cmdlets incluídos na instalação básica do PowerShell.

Pipeline

O PowerShell implementa o conceito de pipeline , que permite canalizar a saída de um cmdlet para outro cmdlet como entrada. Por exemplo, a saída do Get-Processcmdlet pode ser canalizada para Where-Objectfiltrar qualquer processo que tenha menos de 1 MB de memória paginada e, em seguida, para o Sort-Objectcmdlet (por exemplo, para classificar os objetos por contagem de identificadores) e, finalmente, para o Select-Objectcmdlet para selecionar apenas os primeiros dez processos com base na contagem de identificadores. [ citação necessária ]

Assim como os pipelines Unix , os pipelines do PowerShell podem construir comandos complexos, usando o |operador para conectar estágios. No entanto, o pipeline do PowerShell difere dos pipelines do Unix porque os estágios são executados no tempo de execução do PowerShell, e não como um conjunto de processos coordenados pelo sistema operacional . Além disso, objetos .NET estruturados, em vez de fluxos de bytes , são passados ​​de um estágio para o próximo. Usar objetos e executar estágios no tempo de execução do PowerShell elimina a necessidade de serializar estruturas de dados ou extraí-las analisando explicitamente a saída de texto. [41] Um objeto também pode encapsularcertas funções que funcionam nos dados contidos, que ficam disponíveis para o comando do destinatário para uso. [42] [43] Para o último cmdlet em um pipeline, o PowerShell canaliza automaticamente seu objeto de saída para o Out-Defaultcmdlet, que transforma os objetos em um fluxo de objetos de formato e os renderiza na tela. [44] [45]

Como todos os objetos do PowerShell são objetos .NET, eles compartilham um .ToString()método, que recupera a representação de texto dos dados em um objeto. Além disso, o PowerShell permite que as definições de formatação sejam especificadas, para que a representação de texto dos objetos possa ser personalizada escolhendo quais elementos de dados exibir e de que maneira. No entanto, para manter a compatibilidade com versões anteriores , se um executável externo for usado em um pipeline, ele receberá um fluxo de texto representando o objeto, em vez de se integrar diretamente ao sistema do tipo PowerShell. [46] [47] [48]

Scripts

O Windows PowerShell inclui uma linguagem de script tipada dinamicamente que pode implementar operações complexas usando cmdlets de forma imperativa . A linguagem de script suporta variáveis, funções, ramificações ( ), loops ( , , e ), manipulação estruturada de erros/exceções e closures / expressões lambda , [49] bem como integração com .NET. As variáveis ​​nos scripts do PowerShell são prefixadas comif-then-elsewhiledoforforeach$. As variáveis ​​podem receber qualquer valor, incluindo a saída de cmdlets. Strings podem ser colocadas entre aspas simples ou entre aspas duplas: ao usar aspas duplas, as variáveis ​​serão expandidas mesmo se estiverem dentro das aspas. Colocar o caminho para um arquivo entre chaves precedido por um cifrão (como em ${C:\foo.txt}) cria uma referência ao conteúdo do arquivo. Se for usado como um valor L , qualquer coisa atribuída a ele será gravada no arquivo. Quando usado como um valor R , o conteúdo do arquivo será lido. Se um objeto for atribuído, ele será serializado antes de ser armazenado. [ citação necessária ]

Os membros do objeto podem ser acessados ​​usando .notação, como na sintaxe C#. O PowerShell fornece variáveis ​​especiais, como $args, que é uma matriz de todos os argumentos de linha de comando passados ​​para uma função da linha de comando e $_, que se refere ao objeto atual no pipeline. [50] O PowerShell também fornece arrays e arrays associativos . A linguagem de script do PowerShell também avalia expressões aritméticas inseridas na linha de comando imediatamente e analisa abreviações comuns, como GB, MB e KB. [51] [52]

Usando a palavra- functionchave, o PowerShell fornece a criação de funções. Uma função simples tem a seguinte aparência geral: [53]

 nome da  função ( [Type] $Param1 ,  [Type] $Param2 ) 
{ 
  # Instruções 
}

No entanto, o PowerShell permite funções avançadas que dão suporte a parâmetros nomeados, parâmetros posicionais, parâmetros de alternância e parâmetros dinâmicos. [53]

função  verbo-substantivo
{
  parâmetro  (
    # Definição de parâmetros estáticos
  )
  dynamicparam  {
    # Definição de parâmetros dinâmicos
  }
  começar  {
    # Conjunto de instruções a serem executadas no início do pipeline
  }
  processo  {
    # Conjuntos de instruções principais, executados para cada item no pipeline
  }
  fim  {
    # Conjunto de instruções a serem executadas no final do pipeline
  }
}

A função definida é invocada em uma das seguintes formas: [53]

nome  valor1  valor2 
Verbo-Substantivo  -Param1  valor1  -Param2  valor2

O PowerShell permite que quaisquer métodos .NET estáticos sejam chamados fornecendo seus namespaces entre colchetes ( []) e, em seguida, usando um par de dois pontos ( ::) para indicar o método estático. [54] Por exemplo:

[Console] :: WriteLine ( "PowerShell" )

Existem dezenas de maneiras de criar objetos no PowerShell. Uma vez criado, pode-se acessar as propriedades e métodos de instância de um objeto usando a .notação. [54]

O PowerShell aceita strings , raw e com escape . Uma string entre aspas simples é uma string bruta, enquanto uma string entre aspas duplas é uma string com escape. O PowerShell trata aspas retas e curvas como equivalentes. [55]

A seguinte lista de caracteres especiais é suportada pelo PowerShell: [56]

Caracteres especiais do PowerShell
Seqüência Significado
`0 Nulo
`a Alerta
`b Retrocesso
`e Escapar
`f Feed de formulário
`n Nova linha
`r Devolução de carro
`t Guia horizontal
`u{x} Sequência de escape Unicode
`v Guia vertical
--% Trate qualquer personagem deste ponto em diante literalmente

Para tratamento de erros, o PowerShell fornece um mecanismo de tratamento de exceção baseado em .NET. Em caso de erros, são lançados objetos contendo informações sobre o erro ( Exceptionobjeto), que são capturados usando a try ... catchconstrução (embora uma trapconstrução também seja suportada). O PowerShell pode ser configurado para retomar a execução silenciosamente, sem realmente lançar a exceção; isso pode ser feito em um único comando, uma única sessão ou perpetuamente. [57]

Os scripts escritos usando o PowerShell podem persistir nas sessões em um .ps1arquivo ou em um .psm1arquivo (o último é usado para implementar um módulo). Mais tarde, todo o script ou funções individuais no script podem ser usadas. Scripts e funções operam de forma análoga aos cmdlets, pois podem ser usados ​​como comandos em pipelines e os parâmetros podem ser vinculados a eles. Objetos de pipeline podem ser passados ​​entre funções, scripts e cmdlets perfeitamente. Para evitar a execução não intencional de scripts, a execução de script é desabilitada por padrão e deve ser habilitada explicitamente. [58] A habilitação de scripts pode ser realizada no nível do sistema, usuário ou sessão. Os scripts do PowerShell podem ser assinados para verificar sua integridade e estão sujeitos à segurança de acesso ao código. [59]

A linguagem de script do PowerShell oferece suporte à notação de prefixo binário semelhante à notação científica com suporte por muitas linguagens de programação na família C. [60]

Hospedagem

Também é possível usar o PowerShell incorporado em um aplicativo de gerenciamento, que usa o tempo de execução do PowerShell para implementar a funcionalidade de gerenciamento. Para isso, o PowerShell fornece uma API de hospedagem gerenciada . Por meio das APIs, o aplicativo pode instanciar um runspace (uma instanciação do tempo de execução do PowerShell), que é executado no processo do aplicativo e é exposto como um objeto. [6] O estado do runspace é encapsulado em um objeto. Quando o runspace é criado, o runtime do Windows PowerShell inicializa a instanciação, incluindo a inicialização dos provedores e a enumeração dos cmdlets, e atualiza oRunspaceSessionStateSessionStateobjeto em conformidade. O Runspace deve ser aberto para processamento síncrono ou processamento assíncrono. Depois disso, ele pode ser usado para executar comandos. [ citação necessária ]

Para executar um comando, um pipeline (representado por um Pipelineobjeto) deve ser criado e associado ao runspace. O objeto de pipeline é então preenchido com os cmdlets que compõem o pipeline. Para operações sequenciais (como em um script do PowerShell), um objeto Pipeline é criado para cada instrução e aninhado dentro de outro objeto Pipeline. [6] Quando um pipeline é criado, o Windows PowerShell invoca o processador de pipeline, que resolve os cmdlets em seus respectivos assemblies (o processador de comando ) e adiciona uma referência a eles ao pipeline e os associa a InputPipe, OutputPipee ErrorOutputPipeobjetos, para representar o conexão com a tubulação. Os tipos são verificados e os parâmetros são vinculados usando reflexão. [6] Uma vez que o pipeline é configurado, o host chama o Invoke()método para executar os comandos, ou seu equivalente assíncrono, InvokeAsync(). Se o pipeline tiver o Write-Hostcmdlet no final do pipeline, ele gravará o resultado na tela do console. Caso contrário, os resultados são entregues ao host, que pode aplicar processamento adicional ou exibir a própria saída. [ citação necessária ]

O Microsoft Exchange Server 2007 usa as APIs de hospedagem para fornecer sua GUI de gerenciamento. Cada operação exposta na GUI é mapeada para uma sequência de comandos do PowerShell (ou pipelines). O host cria o pipeline e os executa. Na verdade, o próprio console interativo do PowerShell é um host do PowerShell, que interpreta os scripts inseridos na linha de comando e cria os Pipelineobjetos necessários e os invoca. [ citação necessária ]

Configuração do Estado Desejado

O DSC permite especificar declarativamente como um ambiente de software deve ser configurado. [61]

Ao executar uma configuração , o DSC garantirá que o sistema obtenha o estado descrito na configuração. As configurações DSC são idempotentes. O Local Configuration Manager (LCM) consulta periodicamente o sistema usando o fluxo de controle descrito pelos recursos (partes imperativas do DSC) para garantir que o estado de uma configuração seja mantido.

Versões

Inicialmente usando o codinome "Monad", o PowerShell foi exibido pela primeira vez publicamente na Professional Developers Conference em outubro de 2003 em Los Angeles. Todas as versões principais ainda são suportadas e cada versão principal apresenta compatibilidade com versões anteriores.

Windows PowerShell 1.0

Sessão do Windows PowerShell 1.0 usando o Console do Windows

O PowerShell 1.0 foi lançado em novembro de 2006 para Windows XP SP2 , Windows Server 2003 SP1 e Windows Vista . [62] É um componente opcional do Windows Server 2008 .

Windows PowerShell 2.0

Windows PowerShell ISE v2.0 no Windows 7 , um ambiente de desenvolvimento integrado para scripts do PowerShell.

O PowerShell 2.0 está integrado ao Windows 7 e Windows Server 2008 R2 [63] e é lançado para Windows XP com Service Pack 3, Windows Server 2003 com Service Pack 2 e Windows Vista com Service Pack 1. [64] [65]

O PowerShell v2 inclui alterações na linguagem de script e na API de hospedagem, além de incluir mais de 240 novos cmdlets. [66] [67]

Os novos recursos do PowerShell 2.0 incluem: [68] [69] [70]

  • PowerShell remoting : usando o WS-Management , o PowerShell 2.0 permite que scripts e cmdlets sejam invocados em uma máquina remota ou em um grande conjunto de máquinas remotas.
  • Trabalhos em segundo plano : também chamado de PSJob , permite que uma sequência de comandos (script) ou pipeline seja invocado de forma assíncrona. Os trabalhos podem ser executados na máquina local ou em várias máquinas remotas. Um cmdlet interativo em um PSJob bloqueia a execução do trabalho até que a entrada do usuário seja fornecida.
  • Transações : Habilite o cmdlet e os desenvolvedores podem realizar operações transacionais . O PowerShell 2.0 inclui cmdlets de transação para iniciar, confirmar e reverter uma PSTransaction , bem como recursos para gerenciar e direcionar a transação ao cmdlet participante e às operações do provedor. O provedor de registro do PowerShell oferece suporte a transações.
  • Funções avançadas : são cmdlets escritos usando a linguagem de script do PowerShell. Inicialmente chamado de "cmdlets de script", esse recurso foi posteriormente renomeado como "funções avançadas". [71]
  • SteppablePipelines : permite que o usuário controle quando as funções e BeginProcessing()de um cmdlet são chamadas.ProcessRecord()EndProcessing()
  • Módulos : Isso permite que desenvolvedores e administradores de script organizem e particionem scripts do PowerShell em unidades reutilizáveis ​​e independentes. O código de um módulo é executado em seu próprio contexto independente e não afeta o estado fora do módulo. Os módulos podem definir um ambiente de runspace restrito usando um script. Eles têm um estado persistente, bem como membros públicos e privados.
  • Linguagem de dados : um subconjunto específico de domínio da linguagem de script do PowerShell que permite que as definições de dados sejam desacopladas dos scripts e que recursos de cadeia de caracteres localizados sejam importados para o script em tempo de execução ( Script Internationalization ).
  • Depuração de script : permite que pontos de interrupção sejam definidos em um script ou função do PowerShell. Pontos de interrupção podem ser definidos em linhas, linhas e colunas, comandos e acesso de leitura ou gravação de variáveis. Inclui um conjunto de cmdlets para controlar os pontos de interrupção via script.
  • Eventing : Este recurso permite ouvir, encaminhar e atuar em eventos de gerenciamento e sistema. A criação de eventos permite que os hosts do PowerShell sejam notificados sobre alterações de estado em suas entidades gerenciadas. Ele também permite que scripts do PowerShell assinem ObjectEvents , PSEvents e WmiEvents e os processem de forma síncrona e assíncrona.
  • Windows PowerShell Integrated Scripting Environment (ISE) : O PowerShell 2.0 inclui um host PowerShell baseado em GUI que fornece depurador integrado, realce de sintaxe , preenchimento de guias e até 8 consoles habilitados para Unicode do PowerShell (Runspaces) em uma interface do usuário com guias, bem como a capacidade para executar apenas as partes selecionadas em um script.
  • Transferência de arquivos de rede : suporte nativo para transferência priorizada, limitada e assíncrona de arquivos entre máquinas usando o Serviço de transferência inteligente em segundo plano (BITS). [72]
  • Novos cmdlets : Incluindo Out-GridView, que exibe dados tabulares no objeto WPF GridView , em sistemas que permitem isso e se o ISE estiver instalado e habilitado.
  • Novos operadores : -Split, -Joine Splatting ( @).
  • Manipulação de exceção com Try-Catch-Finally : Ao contrário de outras linguagens .NET, isso permite vários tipos de exceção para um único bloco catch.
  • Nestable Here-Strings : PowerShell Here-Strings foram aprimorados e agora podem ser aninhados. [73]
  • Comentários em bloco : o PowerShell 2.0 oferece suporte a comentários em bloco usando <#e #>como delimitadores. [74]
  • Novas APIs : As novas APIs vão desde a entrega de mais controle sobre o analisador e o tempo de execução do PowerShell ao host, até a criação e gerenciamento da coleção de Runspaces ( RunspacePools), bem como a capacidade de criar Runspaces Restritos que permitem que apenas um subconjunto configurado do PowerShell seja invocado . As novas APIs também suportam a participação em uma transação gerenciada pelo PowerShell

Windows PowerShell 3.0

O PowerShell 3.0 está integrado ao Windows 8 e ao Windows Server 2012 . A Microsoft também disponibilizou o PowerShell 3.0 para Windows 7 com Service Pack 1, para Windows Server 2008 com Service Pack 1 e para Windows Server 2008 R2 com Service Pack 1. [75] [76]

O PowerShell 3.0 faz parte de um pacote maior, o Windows Management Framework 3.0 (WMF3), que também contém o serviço WinRM para dar suporte à comunicação remota. [76] A Microsoft fez vários lançamentos do Community Technology Preview do WMF3. Uma versão prévia da tecnologia da comunidade 2 (CTP 2) do Windows Management Framework 3.0 foi lançada em 2 de dezembro de 2011. [77] O Windows Management Framework 3.0 foi lançado para disponibilidade geral em dezembro de 2012 [78] e está incluído no Windows 8 e no Windows Server 2012 por padrão. [79]

Os novos recursos do PowerShell 3.0 incluem: [76] [80] : 33–34 

  • Trabalhos agendados : Os trabalhos podem ser agendados para serem executados em uma data e hora predefinidas usando a infraestrutura do Agendador de Tarefas do Windows .
  • Conectividade de sessão : As sessões podem ser desconectadas e reconectadas. As sessões remotas tornaram-se mais tolerantes a falhas temporárias de rede.
  • Escrita de código aprimorada : conclusão de código (IntelliSense) e trechos são adicionados. O PowerShell ISE permite que os usuários usem caixas de diálogo para preencher parâmetros para cmdlets do PowerShell.
  • Suporte à delegação : As tarefas administrativas podem ser delegadas a usuários que não têm permissões para esse tipo de tarefa, sem conceder a eles permissões adicionais perpétuas.
  • Atualização de ajuda : As documentações de ajuda podem ser atualizadas através do comando Update-Help.
  • Detecção automática de módulo : Os módulos são carregados implicitamente sempre que um comando desse módulo é invocado. A conclusão de código também funciona para módulos descarregados.
  • Novos comandos : Dezenas de novos módulos foram adicionados, incluindo funcionalidades para gerenciar discos get-WmiObject win32_logicaldisk, volumes, firewalls, conexões de rede e impressoras, que antes eram realizadas via WMI. [ explicações adicionais necessárias ]

Windows PowerShell 4.0

O PowerShell 4.0 está integrado ao Windows 8.1 e ao Windows Server 2012 R2 . A Microsoft também disponibilizou o PowerShell 4.0 para Windows 7 SP1 , Windows Server 2008 R2 SP1 e Windows Server 2012 . [81]

Os novos recursos do PowerShell 4.0 incluem:

  • Configuração do estado desejado : [82] [83] [84] Extensões de linguagem declarativa e ferramentas que permitem a implantação e o gerenciamento de dados de configuração para sistemas usando os padrões de gerenciamento DMTF e o protocolo WS-Management
  • Nova política de execução padrão : em servidores Windows, a política de execução padrão agora é RemoteSigned.
  • Salvar-Ajuda : A ajuda agora pode ser salva para módulos instalados em computadores remotos.
  • Depuração aprimorada : o depurador agora oferece suporte a fluxos de trabalho de depuração, execução remota de scripts e preservação de sessões de depuração em reconexões de sessão do PowerShell.
  • -PipelineVariable switch : Um novo parâmetro onipresente para expor o objeto pipeline atual como uma variável para fins de programação
  • Diagnóstico de rede para gerenciar switches de rede virtualizados e físicos do Hyper-V
  • A sintaxe do método Where e ForEach fornece um método alternativo de filtragem e iteração sobre objetos.

Windows PowerShell 5.0

Ícone do PowerShell 5.0

O Windows Management Framework (WMF) 5.0 RTM, que inclui o PowerShell 5.0, foi relançado na Web em 24 de fevereiro de 2016, após um lançamento inicial com um bug grave. [85]

Principais recursos incluídos:

  • A nova palavra- class chave que cria classes para programação orientada a objetos
  • A nova enumpalavra-chave que cria enumerações
  • OneGetcmdlets para suportar o gerenciador de pacotes Chocolatey [86]
  • Estendendo o suporte para gerenciamento de switch para switches de rede de camada 2 . [87]
  • Depuração para trabalhos em segundo plano do PowerShell e instâncias do PowerShell hospedadas em outros processos (cada um deles é chamado de "runspace")
  • Desired State Configuration (DSC) Local Configuration Manager (LCM) versão 2.0
  • Configurações parciais de DSC
  • Metaconfigurações do DSC Local Configuration Manager
  • Criação de recursos DSC usando classes do PowerShell

Windows PowerShell 5.1

Foi lançado junto com a Atualização de Aniversário do Windows 10 [88] em 2 de agosto de 2016 e no Windows Server 2016 . [89] PackageManagement agora oferece suporte a proxies, PSReadLine agora tem suporte a ViMode e dois novos cmdlets foram adicionados: Get-TimeZone e Set-TimeZone. O módulo LocalAccounts permite adicionar/remover contas de usuários locais. [90] Uma prévia do PowerShell 5.1 foi lançada para Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 e Windows Server 2012 R2 em 16 de julho de 2016, [91] e foi lançada em 19 de janeiro de 2017. [92]

O PowerShell 5.1 é a primeira versão a chegar em duas edições de "Desktop" e "Core". A edição "Desktop" é a continuação do Windows PowerShell tradicional que é executado na pilha do .NET Framework. A edição "Core" é executada no .NET Core e é fornecida com o Windows Server 2016 Nano Server. Em troca de um espaço menor, este último carece de alguns recursos, como os cmdlets para gerenciar a área de transferência ou ingressar um computador em um domínio, cmdlets WMI versão 1, cmdlets de log de eventos e perfis. [23] Esta foi a versão final do PowerShell feita exclusivamente para Windows.

PowerShell Core 6

O PowerShell Core 6.0 foi anunciado pela primeira vez em 18 de agosto de 2016, quando a Microsoft revelou o PowerShell Core e sua decisão de tornar o produto multiplataforma , independente do Windows, gratuito e de código aberto. [5] Ele alcançou a disponibilidade geral em 10 de janeiro de 2018 para Windows, macOS e Linux . [93] Ele tem seu próprio ciclo de vida de suporte e adere à política de ciclo de vida da Microsoft introduzida com o Windows 10: apenas a versão mais recente do PowerShell Core é compatível. A Microsoft espera lançar uma versão secundária do PowerShell Core 6.0 a cada seis meses. [94]

A mudança mais significativa nesta versão do PowerShell é a expansão para outras plataformas. Para administradores do Windows, esta versão do PowerShell não incluiu nenhum novo recurso importante. Em uma entrevista com a comunidade em 11 de janeiro de 2018, a equipe do PowerShell foi solicitada a listar as 10 coisas mais interessantes que aconteceriam para um profissional de TI do Windows que migraria do Windows PowerShell 5.1 para o PowerShell Core 6.0; em resposta, Angel Calvo, da Microsoft, só conseguiu citar dois: multiplataforma e código aberto. [95]

De acordo com a Microsoft, um dos novos recursos do PowerShell 6.1 é "Compatibilidade com mais de 1900 cmdlets existentes no Windows 10 e Windows Server 2019 ". [96] Ainda assim, nenhum detalhe desses cmdlets pode ser encontrado na versão completa do log de alterações. [97] Mais tarde, a Microsoft afirma que esse número era insuficiente, pois o PowerShell Core não conseguiu substituir o Windows PowerShell 5.1 e ganhou força no Windows. [98] No entanto, era popular no Linux. [98]

O PowerShell Core 6.2 está focado principalmente em melhorias de desempenho, correções de bugs e aprimoramentos de cmdlet e linguagem menores que melhoraram a produtividade do desenvolvedor. [99]

PowerShell 7

O PowerShell 7 é o substituto dos produtos PowerShell Core 6.x, bem como do Windows PowerShell 5.1, que é a última versão com suporte do Windows PowerShell. [100] [98] O foco no desenvolvimento foi tornar o PowerShell 7 um substituto viável para o Windows PowerShell 5.1, ou seja, ter quase paridade com o Windows PowerShell em termos de compatibilidade com os módulos fornecidos com o Windows. [101]

Os novos recursos do PowerShell 7 incluem: [102]

  • A -Parallelopção do ForEach-Objectcmdlet para ajudar a lidar com o processamento paralelo
  • Quase paridade com o Windows PowerShell em termos de compatibilidade com módulos internos do Windows
  • Uma nova visualização de erro
  • O Get-Errorcmdlet
  • Operadores de encadeamento de pipeline ( &&e ||) que permitem a execução condicional do próximo cmdlet no pipeline
  • O ?: operador para operação ternária
  • O ??=operador que só atribui um valor a uma variável quando o valor existente da variável é nulo
  • O ??operador para coalescência nula
  • Multiplataforma Invoke-DscResource(experimental)
  • Retorno do Out-GridViewcmdlet
  • Retorno do -ShowWindowinterruptor para oGet-Help

PowerShell 7.2

O PowerShell 7.2 é a próxima versão de suporte de longo prazo do PowerShell, após a versão 7.0. Ele usa .NET 6.0 e apresenta pacotes de instalação universal para Linux. No Windows, as atualizações do PowerShell 7.2 e posteriores são fornecidas pelo serviço Microsoft Update ; esse recurso está ausente do PowerShell 6.0 a 7.1. [103]

Comparação de cmdlets com comandos semelhantes

A tabela a seguir contém uma seleção dos cmdlets fornecidos com o PowerShell, observando comandos semelhantes em outros intérpretes de linha de comando conhecidos. Muitos desses comandos semelhantes vêm prontos para uso definidos como aliases no PowerShell, tornando mais fácil para pessoas familiarizadas com outros shells comuns começarem a trabalhar.

Comparação de cmdlets do PowerShell com comandos internos e externos de outros interpretadores de linha de comando
PowerShell (Cmdlet) PowerShell (alias) Prompt de Comando do Windows shell Unix Descrição
Get-ChildItem gci, dir, ls [a] diretório ls Lista todos os arquivos e pastas na pasta atual ou determinada
Conexão de teste [b] ping ping ping Envia solicitações de eco ICMP para a máquina especificada da máquina atual ou instrui outra máquina a fazê-lo
Obter conteudo gc, tipo, gato modelo gato Obtém o conteúdo de um arquivo
Get-Command gcm ajuda , onde tipo , que , compgen Lista os comandos disponíveis e obtém o caminho do comando
Obter ajuda ajuda, cara ajuda a propósito , homem Imprime a documentação de um comando no console
Limpar Host cls, claro cls Claro Limpa a tela [c]
Copiar-Item cpi, copiar, cp copiar , xcopy , robocopy cp Copia arquivos e pastas para outro local
Mover-Item mi, mover, mv jogada mv Move arquivos e pastas para um novo local
Remover item ri, del, apagar, rmdir, rd, rm del , erase , rmdir , rd rm , rmdir Exclui arquivos ou pastas
Renomear-Item rni, ren, mv ren , renomear mv Renomeia um único arquivo, pasta, link físico ou link simbólico
Get-Location gl, cd, pwd cd pwd Exibe o caminho de trabalho (pasta atual)
Pop-Local popd popd popd Altera o caminho de trabalho para o local mais recentemente colocado na pilha
Push-Location empurrado empurrado empurrado Armazena o caminho de trabalho na pilha
Defina localização sl, cd, chdir cd , chdir cd Altera o caminho de trabalho
Tee-Object camiseta camiseta Encaminha a entrada para um arquivo ou variável, passando a entrada ao longo do pipeline
Saída de Gravação ecoar, escrever eco eco Imprime strings ou outros objetos na saída padrão
Get-Processo gps, ps tlist , [d] lista de tarefas [e] ps Lista todos os processos em execução
Parar-Processo sps, matar kill , [d] taskkill [e] matar [f] Interrompe um processo em execução
Select-String sls findstr encontrar , grep Imprime linhas que correspondem a um padrão
Definir Variável sv, conjunto definir env, exportar, definir, setenv Cria ou altera o conteúdo de uma variável de ambiente
Invoke-WebRequest iwr, curl, wget [g] enrolar [105] wget , enrolar Obtém o conteúdo de uma página da Web na Internet

Notas

  1. ^ ls alias está ausente na versão Linux do PowerShell Core.
  2. ^ Enquanto o comando ping externo permanece disponível para o PowerShell, a saída do Test-Connection é um objeto estruturado que pode ser inspecionado programaticamente. [104]
  3. ^ Clear-Host é implementado como uma função predefinida do PowerShell.
  4. ^ a b Disponível no Windows NT 4 , Windows 98 Resource Kit , Ferramentas de suporte do Windows 2000
  5. ^ a b Introduzido no Windows XP Professional Edition
  6. ^ Também usado no UNIX para enviar a um processo qualquer sinal , o sinal "Terminate" é apenas o padrão
  7. ^ curl ewgetaliases estão ausentes do PowerShell Core, para não interferir na chamada de comandos nativos com nomes semelhantes.

Extensões de nome de arquivo

Extensão Descrição
.ps1 Arquivo de roteiro [106]
.psd1 Arquivo de manifesto do módulo; geralmente vem com um módulo de script ou módulo binário [107]
.psm1 Arquivo do módulo de script [108]
.dll Arquivo de módulo binário compatível com DLL [a] [109]
.ps1xml Arquivo de definições de formato e tipo [48] [110]
.xml Arquivo de dados serializado compatível com XML [b] [111]
.psc1 Arquivo de console [112]
.pssc Arquivo de configuração de sessão [113]
.psrc Arquivo de capacidade de função [114]
  1. ^ A biblioteca de vínculo dinâmico (DLL) não é um formato somente do PowerShell. É um formato genérico para armazenaro código do assembly .NET compilado.
  2. ^ XML não é um formato somente do PowerShell. É um formato popular de intercâmbio de informações.

Suporte a aplicativos

Inscrição Versão Cmdlets Fornecedor GUI de gerenciamento
Servidor Exchange 2007 402 Sim Sim
Servidor Windows 2008 Sim Sim Não
Microsoft SQL Server 2008 Sim Sim Não
Microsoft SharePoint 2010 Sim Sim Não
Gerenciador de configuração do System Center 2012 R2 400+ Sim Não
Gerente de Operações do System Center 2007 74 Sim Não
Gerenciador de Máquinas Virtuais do System Center 2007 Sim Sim Sim
Gerenciador de Proteção de Dados do System Center 2007 Sim Não Não
Servidor de cluster de computação do Windows 2007 Sim Sim Não
Pacote Microsoft Transporter para Lotus Domino [115] 08.02.0012 47 Não Não
Microsoft PowerTools para Open XML [116] 1,0 33 Não Não
IBM WebSphere MQ [117] 6.0.2.2 44 Não Não
Complementos do IoT Core [118] 74 Desconhecido Desconhecido
Shell de gerenciamento de missões para Active Directory [119] 1,7 95 Não Não
Comando Specops do Software de Operações Especiais [120] 1,0 Sim Não Sim
VMware vSphere PowerCLI [121] 6,5 R1 500+ Sim Sim
Serviços de Informações da Internet [122] 7,0 54 Sim Não
Centro de solução de problemas do Windows 7 [123] 6.1 Sim Não Sim
Kit de ferramentas de implantação da Microsoft [124] 2010 Sim Sim Sim
Kit de ferramentas NetApp PowerShell [125] [126] 4.2 2000+ Sim Sim
Agendador JAMS - Sistema de Acesso e Gerenciamento de Trabalho [127] 5,0 52 Sim Sim
UIAutomação [128] 0,8 432 Não Não
Dell Equallogic [129] 3,5 55 Não Não
LOGINventário [130] 5,8 Sim Sim Sim
SePSX [131] 0.4.1 39 Não Não

Implementação alternativa

Um projeto chamado Pash , um trocadilho com o conhecido shell Unix " bash ", foi uma reimplementação de código aberto e multiplataforma do PowerShell por meio da estrutura Mono . [132] Pash foi criado por Igor Moochnick, escrito em C# e lançado sob a GNU General Public License . O desenvolvimento do Pash parou em 2008, foi reiniciado no GitHub em 2012, [133] e finalmente cessou em 2016, quando o PowerShell foi oficialmente feito de código aberto e multiplataforma. [134]

Veja também

Referências

  1. ^ "v7.2.5 Versão do PowerShell" . Repositório do PowerShell/PowerShell . Microsoft . Recuperado em 21/06/2022 – via GitHub.com .
  2. ^ "v7.3.0-preview.3 Release do PowerShell" . Repositório do PowerShell/PowerShell . Microsoft . Recuperado em 25/03/2022 – via GitHub.com .
  3. ^ "PowerShell para todos os sistemas!" . 12 de junho de 2017 – via GitHub.com .
  4. Snover, Jeffrey (25 de maio de 2008). "PowerShell e WPF: WTF" . Blog do Windows PowerShell . Microsoft.
  5. ^ a b c Bright, Peter (2016-08-18). "O PowerShell é o mais recente lançamento de código aberto da Microsoft, chegando ao Linux, OS X" . Ars Technica . Condé Nast . Arquivado a partir do original em 2020-04-09 . Recuperado 2020-05-12 .
  6. ^ a b c d e "Como o Windows PowerShell funciona" . Rede de desenvolvedores da Microsoft . Microsoft . Recuperado em 27-11-2007 .
  7. ^ Truher, Jim (dezembro de 2007). "Estender o Windows PowerShell com comandos personalizados" . Revista MSDN . Microsoft. Arquivado a partir do original em 6 de outubro de 2008.
  8. ^ Lowe, Scott (4 de janeiro de 2007). "Exchange 2007: Acostume-se com a linha de comando" . TechRepublic . CBS interativo . Arquivado a partir do original em 16/11/2018 . Recuperado 2020-05-12 .
  9. ^ Snover, Jeffrey (2007-11-13). "Suporte do SQL Server para PowerShell!" . Blog do Windows PowerShell (postagem no blog). Microsoft. Arquivado a partir do original em 2007-11-15 . Recuperado em 2007-11-13 .
  10. ^ Dragan, Richard V. (23 de abril de 2003). "O Windows Server 2003 oferece melhorias gerais" . PCMag . com . Ziff Davis . Um recurso de destaque aqui é que praticamente todos os utilitários administrativos agora funcionam a partir da linha de comando (e a maioria está disponível por meio de telnet).
  11. ^ Jones, Don (2020). Shell de uma ideia: a história não contada do PowerShell . pág. 25. ISBN 978-1-9536450-3-6.
  12. ^ Jeffrey P. Snover (8 de agosto de 2002). "Manifesto da Mônada" (PDF) . Blog do Windows PowerShell . Microsoft . Recuperado em 2 de abril de 2021 .
  13. ^ Biggar e Harbaugh (2017-09-14). "O homem por trás do Windows PowerShell" . Ser Contínuo (Podcast). Pesado . Recuperado 2017-09-14 .
  14. ^ "O Windows PowerShell (Monad) chegou" . Blog do Windows PowerShell . Microsoft . 25 de abril de 2006.
  15. Snover, Jeffrey (15 de novembro de 2006). "Windows PowerShell e Windows Vista" . Blog do Windows PowerShell (postagem no blog). Microsoft .
  16. ^ "Estrutura de gerenciamento do Windows (Windows PowerShell 2.0, WinRM 2.0 e BITS 4.0)" . Suporte . Microsoft . 30 de setembro de 2013. Arquivado a partir do original em 13 de outubro de 2013.
  17. ^ Posey, Brien (6 de outubro de 2009). "10 razões pelas quais você deve aprender a usar o PowerShell" . TechRepublic . Recuperado em 2 de abril de 2021 .
  18. ^ "O que é Pester e por que devo me importar?" . 14 de dezembro de 2015.
  19. Snover, Jeffrey (18 de agosto de 2016). "O PowerShell é de código aberto e está disponível no Linux" . Blogue do Microsoft Azure . Microsoft .
  20. ^ "PowerShell/PowerShell" . GitHub . Recuperado 2016-08-18 .
  21. ^ Hansen, Kenneth; Calvo, Angel (18 de agosto de 2016). "PowerShell no Linux e Open Source!" . Blog do Windows PowerShell . Microsoft .
  22. Foley, Mary Jo (18 de agosto de 2016). "Microsoft open source PowerShell; traz para Linux e Mac OS X" . ZDNet . CBS interativo .
  23. ^ a b "PowerShell no Nano Server" . TechNet . Microsoft . 20 de outubro de 2016.
  24. ^ Jones, Don (2020). Shell de uma ideia: a história não contada do PowerShell . pág. 45. ISBN 978-1-9536450-3-6.
  25. ^ Payette, Bruce (2007). Windows PowerShell em ação . Manning Pubs Co Series. Tripulação. pág. 27. ISBN  9781932394900. Recuperado em 22/07/2016 . A linguagem principal do PowerShell é baseada na gramática POSIX 1003.2 para o shell Korn .
  26. ^ Jones, Don (2020). Shell de uma ideia: a história não contada do PowerShell . pág. 109. ISBN 978-1-9536450-3-6.
  27. ^ "about_Command_Precedence" . TechNet . Microsoft . 8 de maio de 2014.
  28. ^ Wheeler, Sean (2021-09-07). "sobre análise - PowerShell" . Documentos da Microsoft . Recuperado 2021-12-05 .{{cite web}}: CS1 maint: url-status ( link )
  29. ^ "Sistema de tipo estendido do Windows PowerShell" . Recuperado em 28-11-2007 .
  30. ^ a b c "Commdlets do Windows PowerShell" . Recuperado em 28-11-2007 .
  31. ^ "Criando seu primeiro cmdlet" . Recuperado em 28-11-2007 .
  32. ^ "Obter-Verbo" . TechNet . Microsoft . 8 de maio de 2014.
  33. ^ "Visão geral do cmdlet" . MSDN . Microsoft . 8 de maio de 2014.
  34. ^ "Adicionando parâmetros que processam a entrada de linha de comando" . Recuperado em 28-11-2007 .
  35. ^ "Adicionando parâmetros que processam a entrada do pipeline" . Recuperado em 28-11-2007 .
  36. ^ "Provedores do Windows PowerShell" . Recuperado em 2010-10-14 .
  37. ^ Yoshizawa, Tomoaki; Ramos, Durval (29 de setembro de 2012). "PowerShell 1.0 Cmdlets" . Artigos do TechNet . Microsoft.
  38. Yoshizawa, Tomoaki (10 de julho de 2012). "PowerShell 2.0 Cmdlets" . Artigos do TechNet . Microsoft.
  39. ^ Wilson, Ed (2013). "1: Visão geral do Windows PowerShell 3.0" . Windows Powershell 3.0 Passo a Passo . Sebastopol, Califórnia: Microsoft Press . ISBN 978-0-7356-7000-6. OCLC  829236530 . O Windows PowerShell 3.0 vem com cerca de 1.000 cmdlets no Windows 8
  40. ^ Wilson, Ed (2015). "1: Visão geral do Windows PowerShell 5.0" . Windows PowerShell Passo a Passo (Terceira ed.). Redmond, Washington: Microsoft Press . ISBN 978-1-5093-0043-3. OCLC  927112976 . O Windows PowerShell 5.0 vem com cerca de 1.300 cmdlets no Windows 10
  41. ^ "Manual do proprietário do Windows PowerShell: tubulação e pipeline no Windows PowerShell" . TechNet . Microsoft . Recuperado 2011-09-27 .
  42. ^ Jones, Don (2008). "Windows PowerShell – Repensando o pipeline" . Microsoft TechNet . Microsoft . Recuperado em 28-11-2007 .
  43. ^ "Conceitos de objetos do Windows PowerShell" . Arquivado do original em 19 de agosto de 2007 . Recuperado em 28-11-2007 .
  44. ^ "Como a formatação e a saída do PowerShell REALMENTE funcionam" . Recuperado em 28-11-2007 .
  45. ^ "Mais – Como a formatação do PowerShell realmente funciona?" . Recuperado em 28-11-2007 .
  46. ^ "about_Pipelines" . TechNet . Microsoft . 8 de maio de 2014.
  47. ^ "sobre_objetos" . TechNet . Microsoft . 8 de maio de 2014.
  48. ^ a b "about_Format.ps1xml" . TechNet . Microsoft . 8 de maio de 2014.
  49. ^ "Funções anônimas e blocos de código no PowerShell" . Recuperado 2012-01-21 .
  50. ^ "Introdução às variáveis ​​do Windows PowerShell" . Recuperado em 28-11-2007 .
  51. ^ "Conversão de bytes" . Dica da semana do Windows PowerShell . Recuperado em 15 de novembro de 2013 .
  52. Ravikanth (20 de maio de 2013). "Convertendo em unidades de tamanho (KB, MB, GB, TB e PB) sem usar multiplicadores do PowerShell" . Revista PowerShell .
  53. ^ a b c "sobre_Funções" . Microsoft TechNet . Microsoft . 17 de outubro de 2013 . Recuperado em 15 de novembro de 2013 .
  54. ^ a b "Testes leves com o Windows PowerShell" . Recuperado em 28-11-2007 .
  55. ^ Angelopoulos, Alex; Karen, Bemowski (4 de dezembro de 2007). "O PowerShell ficou esperto sobre as cotações inteligentes" . Profissional de TI do Windows . Mídia Penton . Recuperado em 15 de novembro de 2013 .
  56. ^ "Sobre caracteres especiais" . Powershell/Script. Microsoft . 8 de junho de 2017 . Recuperado em 20 de junho de 2019 .
  57. ^ "Armadilha [Exceção] { "No PowerShell" }" . Recuperado em 28-11-2007 .
  58. ^ "Executando scripts do Windows PowerShell" . Microsoft . Recuperado em 28-11-2007 .
  59. ^ "sobre_Assinatura" . Microsoft TechNet . Microsoft . 17 de outubro de 2013 . Recuperado em 15 de novembro de 2013 .
  60. ^ Lee Holmes (setembro de 2006). Referência Rápida do Windows PowerShell . Mídia O'Reilly.
  61. ^ eslesar. "Visão geral da configuração do estado desejado do Windows PowerShell" . msdn.microsoft . com .
  62. ^ Chung, Leonardo; Snover, Jeffrey; Kumaravel, Arul (14 de novembro de 2006). "É um Wrap! Windows PowerShell 1.0 lançado!" . Blog do Windows PowerShell . Microsoft .
  63. ^ "O PowerShell será instalado por padrão no Windows Server 08 R2 (WS08R2) e Windows 7 (W7)!" . Blog do Windows PowerShell . Microsoft . 2008-10-28 . Recuperado 2011-09-27 .
  64. ^ "O Windows Management Framework está aqui!" . 27/10/2009 . Recuperado 2009-10-30 .
  65. ^ "Base de conhecimento de suporte da Microsoft: Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 e BITS 4.0)" . Support.microsoft. com. 23/09/2011 . Recuperado 2011-09-27 .
  66. ^ "574 razões pelas quais somos tão orgulhosos e otimistas sobre W7 e WS08R2" . Blog do Windows PowerShell . Microsoft . 2008-10-29 . Recuperado 2011-09-27 .
  67. ^ Snover, Jeffrey (2008). "PowerShell: Criando serviços Web gerenciáveis" . Arquivado do original em 13 de outubro de 2008 . Recuperado em 19 de julho de 2015 .
  68. ^ "O que há de novo no CTP do PowerShell 2.0" . Recuperado em 28-11-2007 .
  69. ^ "Windows PowerShell V2 Community Technology Preview 2 (CTP2) - releaseNotes" . Microsoft . Arquivado a partir do original em 6 de maio de 2008 . Recuperado em 2008-05-05 .
  70. ^ "Diferenças entre o PowerShell 1.0 e o PowerShell 2.0" . Recuperado 2010-06-26 .
  71. ^ Jones, Don (maio de 2010). "Windows PowerShell: escrevendo cmdlets no script" . Revista TechNet . Microsoft.
  72. ^ "GoGrid Snap-in - Gerenciando Serviços de Nuvem com PowerShell" . Blog do Windows PowerShell . Microsoft . 2008-10-14 . Recuperado 2011-09-27 .
  73. ^ "Emitir-XML" . Blog do Windows PowerShell . Microsoft . 17-10-2008 . Recuperado 2011-09-27 .
  74. ^ "Bloquear comentários em V2" . Blog do Windows PowerShell . Microsoft . 14-06-2008 . Recuperado 2011-09-27 .
  75. ^ Lee, Thomas (13 de agosto de 2012). "O PowerShell Versão 3 é RTM!" . Sob As Escadas . Recuperado 2012-08-13 .
  76. ^ a b c "Windows Management Framework 3.0" . Centro de downloads . Microsoft . 4 de setembro de 2012 . Recuperado em 2012-11-08 .
  77. ^ "Windows Management Framework 3.0 Community Technology Preview (CTP) #2 disponível para download" . Blog do Windows PowerShell . Microsoft . 2 de dezembro de 2011.
  78. ^ "Estrutura de gerenciamento do Windows 3.0" . Centro de downloads . Microsoft . 3 de dezembro de 2012.
  79. ^ Jofre, Juan Pablo (14 de dezembro de 2016). "Requisitos de sistema do Windows PowerShell" . Rede de desenvolvedores da Microsoft . Microsoft . Recuperado em 20 de abril de 2017 .
  80. ^ Honeycutt, Jerry (2012). Woolley, Valerie (ed.). Apresentando o Windows 8: uma visão geral para profissionais de TI . Redmond, WA: Microsoft Press . ISBN 978-0-7356-7050-1.
  81. ^ "O Windows Management Framework 4.0 já está disponível" . Microsoft . 24 de outubro de 2013 . Recuperado em 4 de novembro de 2013 .
  82. Levy, Shay (25 de junho de 2013). "Novos recursos no Windows PowerShell 4.0" . Revista PowerShell . Recuperado em 26 de junho de 2013 .
  83. ^ "Configuração do estado desejado no Windows Server 2012 R2 PowerShell" . Canal 9 . Microsoft . 3 de junho de 2013 . Recuperado em 26 de junho de 2013 .
  84. Hall, Adrian (7 de junho de 2013). "Pensamentos da Microsoft TechEd América do Norte" . Blogs: dicas e truques . Splunk . Recuperado em 26 de junho de 2013 .
  85. ^ "Os pacotes RTM do Windows Management Framework (WMF) 5.0 foram republicados" . Blog do Windows PowerShell . Microsoft . 24 de fevereiro de 2016.
  86. ^ "Perguntas e Respostas" . GitHub . Recuperado em 21 de abril de 2015 .
  87. ^ Snover, Jeffrey (2014-04-03). "Visualização do Windows Management Framework V5" . blogs.technet . com . Microsoft . Arquivado a partir do original em 30/06/2014 . Recuperado em 21-04-2015 .
  88. ^ diz, Jaap Brasser (2 de agosto de 2016). "#PSTip Novos comandos do PowerShell na atualização de aniversário do Windows 10" .
  89. ^ "O que há de novo no Windows Server 2016 Standard Edition Parte 9 - Gerenciamento e automação" .
  90. ^ "Módulo Microsoft.PowerShell.LocalAccounts" . technet.microsoft . com .
  91. ^ "Anunciando o Windows Management Framework (WMF) 5.1 Preview" . 16 de julho de 2016.
  92. ^ "WMF 5.1" . Centro de Download da Microsoft .
  93. Aiello, Joey (11 de janeiro de 2018). "PowerShell Core 6.0: geralmente disponível (GA) e com suporte!" . Blog da equipe do PowerShell . Microsoft. Arquivado a partir do original em 11 de junho de 2018 . Recuperado em 11 de junho de 2018 .
  94. ^ Aiello, Joey; Wheeler, Sean (10 de janeiro de 2018). "Ciclo de vida de suporte do PowerShell Core" . Documentos da Microsoft . Microsoft .
  95. Calvo, Angel (11 de janeiro de 2018). "Os 10 motivos mais interessantes para migrar" . PowerShell AMA . Microsoft .
  96. ^ Aiello, Joey (2018-09-13). "Anunciando o PowerShell Core 6.1" . devblogs.microsoft . com . Microsoft . Recuperado 2019-06-01 .
  97. ^ "PowerShell/PowerShell" . GitHub . Recuperado 2020-06-22 .
  98. ^ a b c Lee, Steve (2019-04-05). "A próxima versão do PowerShell – PowerShell 7" . Microsoft . Recuperado 2019-06-01 .
  99. ^ Lee, Steve (2019-03-28). "Disponibilidade geral do PowerShell Core 6.2" . devblogs.microsoft . com . Microsoft . Recuperado 2019-06-01 .
  100. ^ Mackie, Kurt (2019-05-30). "Microsoft libera a visualização do PowerShell 7" . 1105 Media Inc. Recuperado 2019-06-01 .
  101. ^ Lee, Steve (2019-05-30). "Roteiro do PowerShell 7" . devblogs.microsoft . com . Microsoft . Recuperado 2020-08-12 .
  102. ^ Visualização 5 do PowerShell 7 | PowerShell
  103. ^ "PowerShell 7.2 é a nova versão do shell de próxima geração da Microsoft" . itsfoss.net . 12 de novembro de 2021.
  104. ^ "Teste-Conexão" . Documentações do PowerShell . Microsoft . 9 de agosto de 2015.
  105. ^ Tar e Curl Venha para o Windows! - Comunidade de Tecnologia da Microsoft - 382409
  106. ^ Wheeler, Sean (2 de junho de 2020). "Sobre roteiros" . Documentos da Microsoft . Microsoft.
  107. ^ Wheeler, Sean; Smatlak, David; Wilson, Chase (16 de outubro de 2019). "Como escrever um manifesto do módulo PowerShell" . Documentos . Microsoft.
  108. ^ Wheeler, Sean; Smatlak, David (22 de novembro de 2019). "Como escrever um módulo de script do PowerShell" . Documentos da Microsoft . Microsoft.
  109. ^ Wheeler, Sean (13 de novembro de 2016). "Como escrever um módulo binário do PowerShell" . Documentos da Microsoft . Microsoft.
  110. ^ Wheeler, Sean; Godofredo, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David (2 de junho de 2020). "Sobre Types.ps1xml" . Documentos da Microsoft . Microsoft.
  111. ^ Wheeler, Sean. "Export-Clixml" . Documentos da Microsoft . Microsoft.
  112. ^ Wheeler, Sean; Godofredo, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David. "Export-Console" . Documentos da Microsoft . Microsoft.
  113. ^ Wheeler, Sean (2 de junho de 2020). "Sobre arquivos de configuração de sessão" . Documentos da Microsoft . Microsoft.
  114. ^ Wheeler, Sean (2 de junho de 2020). "New-PSRoleCapabilityFile" . Documentos da Microsoft . Microsoft.
  115. ^ "Microsoft Transporter Suite para Lotus Domino" . Microsoft . Recuperado em 2008-03-07 .
  116. ^ "PowerTools para Open XML" . Recuperado 2008-06-20 .
  117. ^ "MO74: WebSphere MQ – Biblioteca do Windows PowerShell" . Recuperado em 2007-12-05 .
  118. ^ "Opções de linha de comando de complementos do IoT Core" . Recuperado 2020-06-13 .
  119. ^ "Comandos PowerShell para Active Directory por Quest Software" . Recuperado em 2008-07-02 .
  120. ^ "Remoto do PowerShell por meio da Diretiva de Grupo" . Recuperado em 2007-12-07 .
  121. ^ "VMware vSphere PowerCLI" . Recuperado 2014-09-09 .
  122. ^ "Windows PowerShell: IIS7 PowerShell Provider Tech Preview 2" . Recuperado em 2008-07-03 .
  123. ^ "Parabéns à equipe de diagnóstico do Win7" . Recuperado 2009-06-15 .
  124. ^ Michael, Niehaus (10 de julho de 2009). "Novo recurso do MDT 2010 nº 16: suporte ao PowerShell" . Recuperado em 27/10/2014 .
  125. ^ "Kudos to NetApp for Data ONTAP PowerShell ToolKit" . Recuperado 2010-06-15 .
  126. ^ "Anúncio do PowerShell Toolkit 4.2" . 23 de junho de 2016 . Recuperado 2016-09-07 .
  127. ^ "Agendamento de trabalho heterogêneo com PowerShell" . Recuperado 2010-09-15 .
  128. ^ "Extensões do PowerShell UIAutomation" . Recuperado 2012-02-16 .
  129. ^ "EqualLogic HIT-ME com PowerShell" . Recuperado 2012-03-09 .
  130. ^ de:LOGINventory
  131. ^ "Extensões Selenium PowerShell" . Recuperado 2012-08-20 .
  132. ^ "Pash" . SourceForge . Dice Holdings, Inc. Recuperado em 27/09/2011 .
  133. ^ "Projeto Pash" . GitHub . Recuperado 2013-04-10 .
  134. ^ "Pash agora está obsoleto · Edição #429 · Pash-Project/Pash" . GitHub . Recuperado 2019-11-26 .

Leitura adicional

Links externos