2 votes

Windows 10 : Problèmes (commandes non disponibles) avec Powershell 7 + PSWindowsUpdate

De l'installation :

  • Windows 10 2004 passe aux dernières mises à jour stables
  • powershell 7.0.3
  • PSWindowsUpdate 2.2.0.2

TLDR : J'utilise la configuration ci-dessus et je ne peux pas exécuter les commandes disponibles dans PSWindowsUpdate tant que je n'ai pas exécuté "Get-Command -module PSWindowsUpdate".


Je pense que la meilleure façon de l'expliquer est de le faire à l'aide d'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 en C:\Program Dossiers \PowerShell\7\Modules
  • redémarrer le PC
  • réexécuter la commande "Install-WindowsUpdate" (mêmes problèmes que ci-dessus)
  • réexécuter la commande "Get-Command -module PSWindowsUpdate".
  • réexécuter la commande "Install-WindowsUpdate" et il 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"
  • fermer la session/fenêtre Powershell 5.x
  • ouvrir une autre session/fenêtre Powershell 5.x
  • réexécution de la commande "Install-WindowsUpdate" et aucun problème.
  • redémarrer le PC
  • réexécution de la commande "Install-WindowsUpdate" et toujours pas de problème

1voto

Cpt.Whale Points 1486

Il ne suffit pas d'installer le module sur le système, vous devez le charger dans votre session avec Import-Module PSWindowsUpdate . Une caractéristique déroutante est que le fait de spécifier -Module dans votre Get-Command -Module PSWindowsUpdate La commande exécute en fait Import-Module dans les coulisses pour vérifier les commandes de ce module. Par exemple, vous pouvez probablement reproduire 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

L'installation du module n'est pas suffisante selon le install-module docs : "Pour éviter d'exécuter des modules contenant du code malveillant, les modules installés ne sont pas automatiquement importés après l'installation."

Powershell dispose d'une variable d'environnement pour définir votre préférence à cet égard : $PSModuleAutoLoadingPreference :

  • Tous : Les modules sont importés automatiquement lors de la première utilisation. Pour importer un module, obtenez ou utilisez n'importe quelle commande du module. Par exemple, utilisez Get-Command.
  • ModuleQualifié : Les modules ne sont importés automatiquement que lorsqu'un utilisateur utilise le nom qualifié de module d'une commande du module. Par exemple, si l'utilisateur tape MonModule \MyCommand PowerShell importe le module MyModule.
  • Aucun : L'importation automatique de 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, voir about_Modules .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X