L'installation de PowerShell module de persistance pour tous les utilisateurs
Je suis de l'installation d'un module PowerShell via Poulpe Déployer sur un certain nombre de différents serveurs. Pour des fins de test, je suis allé avec l'aide de la documentation de Microsoft pour l'installation de Modules PowerShell.
Cela a bien fonctionné, mais comme la documentation indiquée, mes changements seront visibles uniquement pour la session en cours. C'est, si je devais faire ce qui suit:
$modulePath = [Environment]::GetEnvironmentVariable("PSModulePath", [EnvironmentVariableTarget]::Machine)
# More practically, this would be some logic to install only if not present
$modulePath += ";C:\CustomModules"
[Environment]::SetEnvironmentVariable("PSModulePath", $modulePath, [EnvironmentVariableTarget]::Machine)
Lors de l'exécution de ce programme d'installation automatiquement sur leurs serveurs, les futurs PowerShell sessions ne semblent pas voir la nouvellement installé les modules.
Comment puis-je installer un module PowerShell dans un profil de façon agnostique, de sorte que chaque session PowerShell commencé peux le voir?
Vous devez vous connecter pour publier un commentaire.
PowerShell ne peut "voir" les modules installés dans l'un des répertoires listés dans
$env:PSModulePath
. Sinon, vous devrez importer le module avec son chemin d'accès complet.De faire un nouveau module visible à tous les utilisateurs en gros, vous avez deux options:
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
).PSModulePath
variable contient déjà de votre module personnalisé répertoire (par exemple via un préférences de stratégie de groupe).Ce dernier n'entrera en vigueur que pour PowerShell sessions commencé après la modification a été faite, cependant.
Ce profil s'applique à tous les utilisateurs et tous les shells.
-NoProfile
?-NoProfile
de l'environnement.Après avoir pris les étapes énoncées dans votre question (qui je pense est le général de chemin à faire), j'ai trouvé deux façons d'obtenir le nouveau module source reconnue par Powershell:
Réinitialiser le
PSModulePath
dans chaque session ouverte.J'ai trouvé ce qui était nécessaire pour exécuter à la fois normale et élevée invites à obtenir que cela fonctionne sans avoir à redémarrer à chaque type d'invite de commandes. (Voir aussi la conversation @ Sujet: PSModulePath.)