Windows 10: problèmes (commandes non facilement disponibles) avec Powershell 7 + PSWindowsUpdate
installer:
- mises à jour de Windows 10 2004 vers les dernières mises à jour stables
- PowerShell 7.0.3
- PSWindowsUpdate 2.2.0.2
TLDR: J'exécute l'installation ci-dessus et je ne peux pas exécuter les commandes disponibles dans PSWindowsUpdate jusqu'à ce que j'exécute "Get-Command -module PSWindowsUpdate".
Je pense que c'est mieux expliqué avec un exemple.
> Install-WindowsUpdate
Install-WindowsUpdate: The term 'Install-WindowsUpdate' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
> Get-Command -module PSWindowsUpdate
CommandType Name Version Source
----------- ---- ------- ------
Alias Clear-WUJob 2.2.0.2 PSWindowsUpdate
Alias Download-WindowsUpdate 2.2.0.2 PSWindowsUpdate
Alias Get-WUInstall 2.2.0.2 PSWindowsUpdate
Alias Get-WUList 2.2.0.2 PSWindowsUpdate
Alias Hide-WindowsUpdate 2.2.0.2 PSWindowsUpdate
Alias Install-WindowsUpdate 2.2.0.2 PSWindowsUpdate
--snip--
> Install-WindowsUpdate
>
J'ai installé le module via "Install-Module -Name PSWindowsUpdate -Force" et cela a créé des dossiers / fichiers dans $ HOME \ Documents \ PowerShell \ Modules \ PSWindowsUpdate.
En guise de test, je:
- déplacer le dossier «PSWindowsUpdate» de $ HOME \ Documents \ PowerShell \ Modules vers C: \ Program Files \ PowerShell \ 7 \ Modules
- redémarrer le PC
- réexécutez la commande "Install-WindowsUpdate" (mêmes problèmes que ci-dessus)
- réexécutez la commande "Get-Command -module PSWindowsUpdate"
- réexécutez la commande "Install-WindowsUpdate" et elle est maintenant disponible
Comme autre test, je:
- ouvrir une session / fenêtre Powershell 5.x
- installer le module PSWindowsUpdate via "Install-Module -Name PSWindowsUpdate -Force"
- fermez la session / fenêtre Powershell 5.x
- ouvrir une autre session / fenêtre Powershell 5.x
- réexécutez la commande "Install-WindowsUpdate" et aucun problème
- redémarrer le PC
- réexécutez la commande "Install-WindowsUpdate" et toujours aucun problème
Réponses
Il ne suffit pas d'installer le module sur le système, vous devez charger le module dans votre session avec Import-Module PSWindowsUpdate. Une caractéristique déroutante ici est que la spécification -Moduledans votre Get-Command -Module PSWindowsUpdatecommande s'exécute en réalité Import-Moduledans les coulisses pour vérifier les commandes dans ce module. Par exemple, vous pouvez probablement répliquer ceci:
Get-Module AWSPowershell
# no output - module is not loaded
Get-Command -Module AWSPowershell
# CommandType Name Version
# ----------- ---- -------
# Alias Add-ALXBContactWithAddressBook 3.3.590.0
# Alias Add-ASInstances 3.3.590.0
# [etc]
Get-Module AWSPowershell
# ModuleType Version Name
# ---------- ------- ----
# Binary 3.3.590.0 awspowershell
La simple installation du module ne suffit pas selon la install-moduledocumentation: "Pour empêcher l'exécution de modules contenant du code malveillant, les modules installés ne sont pas automatiquement importés après l'installation."
Powershell a une variable d'environnement pour définir votre préférence pour cela $PSModuleAutoLoadingPreference:
- Tous: les modules sont importés automatiquement lors de la première utilisation. Pour importer un module, récupérez ou utilisez n'importe quelle commande du module. Par exemple, utilisez Get-Command.
- ModuleQualified: les modules sont importés automatiquement uniquement lorsqu'un utilisateur utilise le nom qualifié de module d'une commande dans le module. Par exemple, si l'utilisateur tape MyModule \ MyCommand, PowerShell importe le module MyModule.
- Aucun: l'importation automatique des modules est désactivée dans la session. Pour importer un module, utilisez la cmdlet Import-Module.
Pour plus d'informations sur l'importation automatique de modules, consultez about_Modules .