Windows 10: problemi (comandi non immediatamente disponibili) con Powershell 7 + PSWindowsUpdate
impostare:
- Windows 10 2004 si aggiorna agli ultimi aggiornamenti stabili
- powershell 7.0.3
- PSWindowsUpdate 2.2.0.2
TLDR: sto eseguendo la configurazione di cui sopra e non posso eseguire i comandi disponibili in PSWindowsUpdate finché non eseguo "Get-Command -module PSWindowsUpdate".
Penso che sia meglio spiegato con un esempio.
> 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
>
Ho installato il modulo tramite "Install-Module -Name PSWindowsUpdate -Force" e questo ha creato cartelle / file in $ HOME \ Documents \ PowerShell \ Modules \ PSWindowsUpdate.
Come test, io:
- sposta la cartella "PSWindowsUpdate" da $ HOME \ Documents \ PowerShell \ Modules in C: \ Program Files \ PowerShell \ 7 \ Modules
- riavviare il PC
- riesegui il comando "Install-WindowsUpdate" (stessi problemi come sopra)
- riesegui il comando "Get-Command -module PSWindowsUpdate"
- riesegui il comando "Install-WindowsUpdate" e ora è disponibile
Come altro test, io:
- aprire una sessione / finestra di Powershell 5.x.
- installa il modulo PSWindowsUpdate tramite "Install-Module -Name PSWindowsUpdate -Force"
- chiudere la sessione / finestra di Powershell 5.x.
- aprire un'altra sessione / finestra di Powershell 5.x.
- riesegui il comando "Install-WindowsUpdate" e nessun problema
- riavviare il PC
- riesegui il comando "Install-WindowsUpdate" e ancora nessun problema
Risposte
La semplice installazione del modulo sul sistema non è sufficiente, è necessario caricare il modulo nella sessione con Import-Module PSWindowsUpdate. Una caratteristica che crea confusione qui è che la specifica -Modulenel tuo Get-Command -Module PSWindowsUpdatecomando viene effettivamente eseguita Import-Moduledietro le quinte per verificare i comandi all'interno di quel modulo. Ad esempio, puoi probabilmente replicare questo:
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 semplice installazione del modulo non è sufficiente secondo la install-moduledocumentazione: "Per impedire l'esecuzione di moduli che contengono codice dannoso, i moduli installati non vengono importati automaticamente dopo l'installazione".
Powershell ha una variabile di ambiente per impostare la tua preferenza per questo però $PSModuleAutoLoadingPreference:
- Tutti: i moduli vengono importati automaticamente al primo utilizzo. Per importare un modulo, ottenere o utilizzare qualsiasi comando nel modulo. Ad esempio, usa Get-Command.
- ModuleQualified: i moduli vengono importati automaticamente solo quando un utente utilizza il nome qualificato del modulo di un comando nel modulo. Ad esempio, se l'utente digita MyModule \ MyCommand, PowerShell importa il modulo MyModule.
- Nessuno: l' importazione automatica dei moduli è disabilitata nella sessione. Per importare un modulo, utilizzare il cmdlet Import-Module.
Per ulteriori informazioni sull'importazione automatica dei moduli, vedere about_Modules .