Eu tenho um grupo de scripts do PowerShell que às vezes são executados juntos, às vezes um de cada vez. Cada um dos scripts requer que um determinado snap-in seja carregado.
No momento, cada script está chamando Add-PSSnapin XYZ
no início.
Agora, se eu executar vários scripts consecutivos, os scripts subsequentes geram:
Não é possível adicionar o snap-in XYZ do Windows PowerShell porque ele já foi adicionado. Verifique o nome do snap-in e tente novamente.
Como posso fazer com que cada script verifique se o snap-in já está carregado antes de chamar Add-PSSnapin?
powershell
joshuapoehls
fonte
fonte
Scott já te deu a resposta. Você também pode carregá-lo de qualquer maneira e ignorar o erro se já estiver carregado:
fonte
Surpreendentemente, ninguém mencionou a maneira nativa dos scripts especificarem dependências: a
#REQUIRES -PSSnapin Microsoft.PowerShell...
diretiva de comentário / pré-processador. Da mesma forma, você pode exigir elevação com-RunAsAdministrator
, módulos com-Modules Module1,Module2
e uma versão específica do Runspace.Leia mais digitando
Get-Help about_requires
fonte
Tentei o exemplo de código de @ScottSaad, mas não funcionou para mim. Não descobri exatamente o porquê, mas o cheque não era confiável, às vezes dando certo e às vezes não. Descobri que usar um
Where-Object
filtro naName
propriedade funcionou melhor:Código cortesia deste .
fonte
Scott Saads funciona, mas isso parece um pouco mais rápido para mim. Eu não o medi, mas parece carregar um pouco mais rápido, pois nunca produz uma mensagem de erro.
fonte