16 de março de 2017

Como publicar o seu script Windows PowerShell na galeria pública do PowerShell

PowerShell Logo
O PowerShell é mais que um simples consola de terminal. É desenvolvida pela Microsoft o que permite fazer gestão dos seus produtos através de linhas de comandos ou de scripts. 

Uma das grandes vantagens de pertencer ao Windows Management Framework (WMF) o que permite ter acesso a:
  • Common Information Model (CMI);
  • Component Object Model (COM);
  • Framework .NET;
  • Server Manager CIM Provider;
  • Server Manager WMI provider;
  • Software Inventory Logging (SIL);
  • Windows Management Infrastructure (WMI);
  • Windows PowerShell;
  • Windows PowerShell Desired State Configuration (DSC);
  • Windows PowerShell Integrated Scripting Environment (ISE);
  • Windows PowerShell Web Services (Management OData IIS Extension);
  • Windows Remote Management (WinRM).

Mas tem assim tantas vantagens?
Sim, além de podermos utilizar a framework .NET pode-se criar scripts para fazer trabalhos autónomos que podem ser executados por parâmetros o que possibilita que o script seja reutilizável e atualizável.


No PowerShell as linhas de comandos têm a denominação de cmdlets e são comandos mais complexos. Um cmdlet até pode ser um script que invoca uma chamada de API ou outros cmdlets. Pode consultar a visão geral do Cmdlet em https://msdn.microsoft.com/pt-br/library/ms714395(v=vs.85).aspx .


É importante saber que os novos cmdlets ou funcionalidades apenas estão disponíveis nas últimas versões do sistema operativo. A última versão estável do WMF é 5.1 que inclui:
  • Novo cmdlets: local users and groups; Get-ComputerInfo;
  • Melhorias noPowerShellGet;
  • No PackageManagement foi adicionado suporte para Containers, CBS Setup, EXE-based setup, CAB;
  • Melhorias no Debugging para classes PowerShell e DSC;
  • Melhorias na segurança;
  • Resolução de um serie de pedidos e erros reportados.
Compatibilidade do WMF



WMF 2.0WMF 3.0WMF 4.0WMF 5.0WMF 5.1
Windows XP SIMNÃONÃONÃONÃO
Windows Server 2003SIMNÃONÃONÃONÃO
Windows VistaSIMNÃONÃONÃONÃO
Windows 7 SP1SIMSIMSIMSIMSIM
Windows Server 2008 SP2SIM
SIM
(Expecto IA64)
NÃONÃONÃO
Windows Server 2008 R2 SP1SIM
SIM
(Expecto IA64)
SIMSIMSIM
Windows 8SIMSIMSIMSIMSIM
Windows 8.1SIMSIMSIMSIMSIM
Windows Server 2012 SP1SIMSIMSIMSIMSIM
Windows Server 2012 R2SIMSIMSIMSIMSIM
Windows 10SIMSIMSIMSIMSIM
Windows Server 2016SIMSIMSIMSIMSIM


A partir de 18 de agosto de 2016 o Windows PowerShell passou a ser Open-Source o que significa que pode-se correr em MacOS e algumas distribuições Linux. A equipa do PowerShell está a utilizar o GitHub o que permite que qualquer um possa contribuir com o projeto em https://github.com/powershell .

Galeria do PowerShell
A Galeria do PowerShell é o repositório central do conteúdo do PowerShell. Estão presentes novos comandos do PowerShell ou Desired State Configuration (DSC). 

Antes de iniciar é necessário registar-se em https://www.powershellgallery.com/ com uma conta Microsoft que vai ser utilizada para publicação.

PowerShell Gallery Login



Ao aceder a sua conta pode verificar que tem chave API e é esta chave que é utilizada para submissão.
 
PowerShell Gallery - My Account


Criação do Script
Antes de iniciar o script é necessário criar o bloco que inclui as informações do script com o cmdlet ‘New-ScriptFileInfo’.  O bloco vai conter a versão, GUID que é gerado automaticamente, autor, informações requeridas e dependências do script.

Se já tem um script criado adicione o corpo do PSScriptInfo no início do script.

cmdlet New-ScriptFileInfo

 
Testar o script
O cmdlet ‘Test-ScriptFileInfo’ verifica o bloco de comentário se tiver um erro vai informar onde está localizado ou como corrigi-lo.

 
cmdlet Test-ScriptFileInfo


Como pode verificar na imagem não foi apresentado nenhum erro e pode ser enviado. A seguinte imagem tem um erro propositado em que uma variável está mal definida e não pode ser enviado até o erro ser corrigido.



Publicação do script
Com o script testado já pode publica-lo para publicar necessita da chave API que pode consultar na sua conta.  Para publicar utilize o cmnlet Publish-Script.

Publish-Script -Path <localização do script> -NuGetApiKey <chave API>

Uma regra importante é que o nome  do script tem de ser único se tentar publicar um script com a mesma identificação vai retornar um erro e é obrigado a mudar nome do script. 


cmnlet Publish-Script


Gerir o script na galeria
Na sua conta em ‘Manage my Items’ consegue gerir todos os módulos ou scripts submetidos. 


Pode editar o conteúdo do script.




A galeria também da hipótese de apagar o script mas ainda não é suportado pela galeria o que pode fazer é retirar o script das pesquisas.



Com a publicação bem-sucedida o script é visível e pesquisável na Galeria Web vem como no PowerShell. A galeria da hipótese de gravar o script sem instalar com o cmldet ‘Save-Script’. Se alguém pretender instalar pode utilizar o cmdlet ‘Install-Script’.




Não existe restrição para publicação mas tem de ter atenção que o script ou modulo que pretende publicar não contenha nenhuma informação sensível como por exemplo logins, palavras passes, chaves para ligações a bases de dados.

Mesmo que o script tenha passado nos teste é sempre importante rever e testar o script antes de publicar. Se for possível faça noutra máquina. 

Sem comentários:

Publicar um comentário