Perguntas frequentes sobre a Galeria do PowerShell

O que é um módulo PowerShell?

Um módulo PowerShell é um pacote reutilizável que contém alguma funcionalidade do PowerShell. Tudo no PowerShell (funções, variáveis, recursos DSC, etc.) pode ser empacotado em módulos. Normalmente, módulos são pastas contendo tipos específicos de arquivos armazenados em um caminho específico. Existem alguns tipos diferentes de módulos PowerShell por aí.

O que é um script PowerShell?

Um script PowerShell é uma série de comandos armazenados em um arquivo .ps1 para permitir a reutilização e o compartilhamento. Os fluxos de trabalho do PowerShell também são scripts PowerShell, que delineiam um conjunto de tarefas e fornecem sequenciamento para essas tarefas. Para mais informações, visite Começando com o Fluxo de Trabalho do PowerShell.

Como os scripts PowerShell são diferentes dos módulos PowerShell?

Módulos geralmente são melhores para compartilhamento, mas estamos habilitando o compartilhamento de scripts para facilitar sua contribuição com fluxos de trabalho e scripts para a comunidade. Para mais informações, veja os seguintes blogs:

Como posso publicar na Galeria do PowerShell?

Você deve registrar uma conta na Galeria do PowerShell antes de poder publicar pacotes na Galeria. Isso porque publicar pacotes requer um NuGetApiKey, que é fornecido no registro. Para se registrar, use sua conta pessoal, profissional ou escolar para entrar na Galeria do PowerShell. Um processo de registro único é necessário quando você faz login pela primeira vez. Depois, seu NuGetApiKey fica disponível na sua página de perfil.

Depois de se registrar na Galeria, use os cmdlets Publish-Module ou Publish-Script para publicar seu pacote na Galeria. Para mais detalhes sobre como executar esses cmdlets, visite a aba Publicar ou leia a documentação do Publish-Module e do Publish-Script .

Você não precisa se registrar ou fazer login na Galeria para instalar ou salvar pacotes.

Recebi "Não processou o pedido." quando tentei publicar um pacote na Galeria do PowerShell. O que isso significa?

A mensagem de erro completa é: "Falhou ao processar a solicitação." 'A chave de API especificada é inválida ou não tem permissão para acessar o pacote especificado.'. O servidor remoto retornou um erro: (403) Proibido."

Esse erro pode ocorrer pelos seguintes motivos:

  • A chave de API especificada é inválida. Certifique-se de que você especificou a chave de API válida da sua conta. Para obter sua chave de API, veja sua página de perfil.
  • O nome do pacote especificado não é de sua propriedade. Se você confirmou que sua chave de API está correta, então pode já existir um pacote com o mesmo nome daquele que você está tentando usar. O pacote pode ter sido não listado pelo proprietário, caso em que não aparecerá em nenhum resultado de busca. Para verificar se um pacote com o mesmo nome já existe, abra um navegador e navegue até a página de detalhes do pacote: https://www.powershellgallery.com/packages/<packageName>. Por exemplo, navegar diretamente para https://www.powershellgallery.com/packages/pester você vai até a página de detalhes do módulo Pester, esteja ela não listada ou não. Se um pacote com nome conflitante já existir e não estiver listado, você pode:
    • Selecione outro nome para o seu pacote.
    • Entre em contato com os donos do pacote existente.

Por que não consigo entrar com minha conta pessoal, mas eu poderia fazer login ontem?

Por favor, esteja ciente de que sua conta de galeria não acomoda alterações no seu alias principal de e-mail. Para mais informações, veja Microsoft Email Aliases.

Por que não vejo todos os pacotes da galeria quando seleciono todas as caixas de seleção da Categoria na aba de pacotes?

Ao selecionar uma caixa de seleção Categoria, você está dizendo "Gostaria de ver todos os pacotes desta categoria." Apenas os pacotes das categorias selecionadas serão exibidos. De forma semelhante, ao selecionar todas as caixas de seleção da Categoria, você está dizendo "Gostaria de ver todos os pacotes em qualquer categoria." Mas alguns pacotes na galeria não pertencem a nenhuma das categorias listadas, então não aparecerão nos resultados. Para ver todos os pacotes na galeria, desmarque todas as Categorias ou selecione novamente a aba de pacotes.

Quais são os requisitos para publicar um módulo na Galeria do PowerShell?

Qualquer tipo de módulo PowerShell (módulos script, binários ou módulos manifestos) pode ser publicado na galeria. Para publicar um módulo, o PowerShellGet precisa saber algumas coisas sobre ele – a versão, descrição, autor e como ele é licenciado. Essas informações são lidas como parte do processo de publicação a partir do arquivo manifest do módulo (.psd1), ou do valor do parâmetro LicenseUri do cmdlet de Publicar-Módulo. Todos os módulos publicados na Galeria devem ter manifestos de módulos. Qualquer módulo que inclua as seguintes informações em seu manifesto pode ser publicado na Galeria:

  • Version
  • Descrição
  • Autor
  • Um URI para os termos de licença do módulo, seja como parte da seção PrivateData do manifesto, ou no parâmetro LicenseUri do cmdlet Publish-Module .

Como faço para criar um manifesto de módulo corretamente formatado?

A maneira mais fácil de criar um manifesto de módulo é executar o cmdlet New-ModuleManifest . No PowerShell 5.0 ou versões posteriores, New-ModuleManifest gera um manifesto de módulo corretamente formatado com campos em branco para metadados úteis como ProjectUri, LicenseUri e Tags. Basta preencher as lacunas ou usar o manifesto gerado como exemplo de formatação correta.

Para verificar se todos os campos de metadados necessários foram devidamente preenchidos, use o cmdlet Test-ModuleManifest .

Para atualizar os campos do arquivo manifesto do módulo, use o cmdlet Update-ModuleManifest .

Quais são os requisitos para publicar um roteiro na Galeria?

Qualquer tipo de script PowerShell (scripts ou fluxos de trabalho) pode ser publicado na galeria. Para publicar um script, o PowerShellGet precisa saber algumas coisas sobre ele - a versão, descrição, autor e como ele é licenciado. Essas informações são lidas como parte do processo de publicação a partir da seção PSScriptInfo do arquivo de script, ou do valor do parâmetro LicenseUri do cmdlet Publish-Script. Todos os scripts publicados na Galeria devem conter informações de metadados. Qualquer script que inclua as seguintes informações em sua seção PSScriptInfo pode ser publicado na Galeria:

  • Version
  • Descrição
  • Autor
  • Um URI para os termos de licença do script, seja como parte da seção PSScriptInfo do script, ou no parâmetro LicenseUri do cmdlet Publish-Script .

Como eu faço a pesquisa?

Digite o que você procura na caixa de texto. Por exemplo, se quiser encontrar módulos relacionados ao SQL do Azure, basta digitar "azure sql". Nosso mecanismo de busca procurará essas palavras-chave em todos os pacotes publicados, incluindo títulos, descrições e entre metadados. Depois, com base em uma pontuação de qualidade ponderada, ele exibe as correspondências mais próximas. Você também pode pesquisar por campo específico usando a sintaxe campo:"valor" na consulta de busca para os seguintes campos:

  • Tags
  • Functions
  • Cmdlets
  • DscResources
  • PowerShellVersion

Então, por exemplo, quando você busca por PowerShellVersion:"2.0", apenas serão exibidos resultados compatíveis com PowerShellVersion 2.0 (baseados no manifesto do módulo/script deles).

Como faço para criar um arquivo de script formatado corretamente?

A maneira mais fácil de criar um arquivo de script corretamente formatado é rodar o cmdlet New-ScriptFileInfo . No PowerShell 5.0, New-ScriptFileInfo gera um arquivo de script corretamente formatado com campos em branco para metadados úteis como ProjectUri, LicenseUri e Tags. Basta preencher as lacunas ou usar o arquivo de script gerado como exemplo de formatação correta.

Para verificar se todos os campos de metadados necessários foram devidamente preenchidos, use o cmdlet Test-ScriptFileInfo .

Para atualizar os campos de metadados do script, use o cmdlet Update-ScriptFileInfo .

Quais outros tipos de módulos PowerShell existem?

O termo módulo PowerShell também se refere aos arquivos que implementam funcionalidades reais. Arquivos de módulo script (.psm1) contêm código PowerShell. Arquivos binários de módulos (.dll) contêm código compilado.

Aqui está uma forma de pensar sobre isso: a pasta que encapsula o módulo é a pasta do módulo. A pasta do módulo pode conter um manifesto do módulo (.psd1) que descreve o conteúdo da pasta. Os arquivos que realmente fazem o trabalho são os arquivos de módulo script (.psm1) e os arquivos de módulo binário (.dll). Os recursos DSC estão localizados em uma subpasta específica e são implementados como arquivos de módulo script ou arquivos binários de módulo.

Todos os módulos na Galeria contêm manifestos de módulos, e a maioria desses módulos contém arquivos de módulo script ou arquivos binários. O termo módulo pode ser confuso por causa desses diferentes significados. A menos que explicitamente declarado em contrário, todos os usos da palavra módulo nesta página referem-se à pasta do módulo contendo esses arquivos.

Como o Gerenciamento de Pacotes se relaciona com o PowerShellGet? (Resposta de alto nível)

O PackManagement é uma interface comum para trabalhar com qualquer gerenciador de pacotes. Eventualmente, seja lidando com módulos PowerShell, MSIs, gems Ruby, pacotes NuGet ou módulos Perl, você deve conseguir usar os comandos do PackageManagement (Find-Package e Install-Package) para encontrá-los e instalá-los. O PackageManagement faz isso tendo um provedor de pacotes para cada gerenciador de pacotes que se conecta ao PackageManagement. Os provedores fazem todo o trabalho real; Eles buscam conteúdo dos repositórios e instalam o conteúdo localmente. Frequentemente, os provedores de pacotes simplesmente envolvem as ferramentas existentes de gerenciador de pacotes para um determinado tipo de pacote.

PowerShellGet é o gerenciador de pacotes para pacotes PowerShell. Existe um provedor de pacotes PSModule que expõe funcionalidades do PowerShellGet por meio do PackageManagement. Por isso, você pode rodar o Install-Module ou Install-Package -Provider PSModule instalar um módulo a partir da Galeria do PowerShell. Certas funcionalidades do PowerShellGet, incluindo Update-Module e Publish-Module, não podem ser acessadas por comandos PackageManagement.

Em resumo, o PowerShellGet é focado exclusivamente em oferecer uma experiência premium de gerenciamento de pacotes para conteúdo PowerShell. O Gerenciamento de Pacotes é focado em expor todas as experiências de gerenciamento de pacotes por meio de um conjunto geral de ferramentas. Se você achar essa resposta insatisfatória, há uma resposta longa no final deste documento, na seção Como o PackageManagement realmente se relaciona com o PowerShellGet? .

Para mais informações, por favor visite a página do projeto PackageManagement.

Como o NuGet se relaciona com o PowerShellGet?

A Galeria do PowerShell é uma versão modificada da NuGet Gallery. O PowerShellGet utiliza o provedor NuGet para trabalhar com repositórios baseados em NuGet como o Galeria do PowerShell.

Você pode usar o PowerShellGet contra qualquer repositório ou compartilhamento de arquivos válido do NuGet. Você só precisa adicionar o repositório executando o cmdlet Register-PSRepository .

Isso significa que posso usar NuGet.exe para trabalhar com a Galeria?

Sim.

Como o PackageManagement realmente se relaciona com o PowerShellGet? (Detalhes técnicos)

Por trás do capot, o PowerShellGet aproveita fortemente a infraestrutura de Gerenciamento de Pacotes.

Na camada cmdlet do PowerShell, o Install-Module é na verdade um wrapper fino ao redor Install-Package -Provider PSModulede .

Na camada do provedor de pacotes PackageManagement, o provedor de pacotes PSModule na verdade chama outros provedores de pacotes PackageManagement. Por exemplo, quando você trabalha com galerias baseadas em NuGet (como a Galeria do PowerShell), o provedor do pacote PSModule usa o Provedor de Pacotes NuGet para trabalhar com o repositório.

Diagrama da Arquitetura PowerShellGet

Figura 1: Arquitetura PowerShellGet

O que é necessário para rodar o PowerShellGet?

Em geral, recomendamos escolher a versão mais recente do módulo PowerShellGet (note que ele requer .NET 4.5).

O módulo PowerShellGet requer PowerShell 3.0 ou versão posterior.

Portanto, o PowerShellGet requer um dos seguintes sistemas operacionais:

  • Windows 10
  • Windows 8.1 Pro
  • Windows 8.1 Enterprise
  • Windows 7 SP1
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2008 R2 SP1

O PowerShellGet também requer o .NET Framework 4.5 ou superior. Para obter mais informações, consulte Instalar o .NET Framework para desenvolvedores.

É possível reservar nomes para pacotes que serão publicados no futuro?

Não é possível agachar nomes de pacotes. Se você sentir que um pacote existente adotou o nome que combina melhor com o seu, tente entrar em contato com o dono do pacote. Se você não recebeu resposta em algumas semanas, pode entrar em contato com o suporte e a equipe do Galeria do PowerShell vai investigar.

Como faço para reivindicar a propriedade dos pacotes?

Como lido com um dono de pacote que está violando minha licença de pacotagem?

Incentivamos a comunidade PowerShell a trabalhar junta para resolver quaisquer disputas que possam surgir entre os donos dos pacotes e os donos de outros pacotes. Elaboramos um processo de resolução de disputas que pedimos que sigam antes que PowerShellGallery.com administradores intervenham.