web-dev-qa-db-fra.com

Comment puis-je rechercher un redémarrage en attente?

J'essaie de savoir où le redémarrage est requis ou non pour une machine Windows. Cependant, mon script lance et erreur.

powershell "$key = Get-Item "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -ErrorAction SilentlyContinue"

Error :
Get-Item : A positional parameter cannot be found that accepts argument
'Update\RebootRequired'.
At line:1 char:8
+ $key = Get-Item
HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Aut ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-Item], ParameterBindin
   gException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
   .Commands.GetItemCommand

J'exécute cette commande dans "invite de commande". Pas sûr de ce que ça signifie !

7
Pradeep Shanbhag

Vous devez vérifier 2 chemins, une clé et vous devez interroger le gestionnaire de configuration via WMI afin de vérifier tous les emplacements possibles.

#Adapted from https://Gist.github.com/altrive/5329377
#Based on <http://gallery.technet.Microsoft.com/scriptcenter/Get-PendingReboot-Query-bdb79542>
function Test-PendingReboot {
    if (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -EA Ignore) { return $true }
    if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -EA Ignore) { return $true }
    if (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore) { return $true }
    try { 
        $util = [wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities"
        $status = $util.DetermineIfRebootPending()
        if (($status -ne $null) -and $status.RebootPending) {
            return $true
        }
    }
    catch { }

    return $false
}

Test-PendingReboot
5
Mathis Michel

Le redémarrage en attente peut être causé par diverses raisons, pas seulement celles qui sont détaillées dans d'autres réponses. Essayez le module PendingReboot , qui incorpore divers tests dans une seule applet de commande:

# Install
Install-Module -Name PendingReboot

# Run
Test-PendingReboot -Detailed
12
George Chakhidze

Votre syntaxe n'était pas correcte, si vous souhaitez exécuter la commande PowerShell à partir de cmd, elle doit ressembler à ceci:

powershell.exe "Get-Item 'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'"

Mais comme Mathis l'a mentionné, cette clé n'existe que si un redémarrage est en attente.

3
Paxz

Une chose que j'ai trouvée à l'origine de cela (et pas de maux de tête pour moi) était chaque fois que j'essayais d'exécuter la mise à jour SCCM 1906), elle échouait en raison d'un redémarrage en attente. L'utilisation de ce script dans mon les enquêtes, j'ai remarqué que c'était ComponentBasedServicing qui semblait retarder les travaux, ce que les composants facultatifs installaient automatiquement. Un peu plus de fouilles m'ont conduit à une tâche planifiée appelée LanguageComponentsInstaller. J'ai désactivé cela et je garde un œil sur mais il semble avoir résolu ce problème.

Merci pour le script. Cela m'a évité beaucoup de stress en essayant de casser cet œuf :)

0
Brett