如何检查挂起的重启?

时间:2017-12-18 11:53:30

标签: powershell registry

我试图了解Windows机器需要重启的位置。但是,我的脚本是抛出错误。

@Component({
  selector: 'app-inline-message',
  template: 'Name: {{ user }} | Progress {{ progress}}%',
  styles: [`...`]
})
export class InlineMessageComponent {
  @Input() user: string;
  @Input() weight: string;
}

我在"命令提示符"中运行此命令。不确定这意味着什么!

5 个答案:

答案 0 :(得分:5)

挂起重启可能是由多种原因引起的,而不仅仅是上述原因。尝试PendingReboot模块,该模块将各种测试合并到一个cmdlet中:

# Install
Install-Module -Name PendingReboot

# Run
Test-PendingReboot -Detailed

答案 1 :(得分:3)

您需要检查2个路径,一个密钥,您需要通过wmi查询配置管理器,以便检查所有可能的位置。

target

答案 2 :(得分:1)

您的语法不正确,如果您想从cmd运行PowerShell命令,它必须如下所示:

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

但是像Mathis提到的那样,只有在重启处于待定状态时才存在此密钥。

答案 3 :(得分:0)

我发现引起这一问题的一件事情(对我来说,是没有尽头的)是每次我尝试运行SCCM 1906更新时,由于挂起的重启失败。在调查中使用此脚本时,我注意到ComponentBasedServicing似乎拖延了工作,这是Optional Components自动安装的。多一点的挖掘工作使我完成了名为LanguageComponentsInstaller的预定任务。我禁用了此功能,但我一直在关注,但似乎已解决了该问题。

感谢您的脚本。试图破解这个鸡蛋为我节省了很多压力:)

答案 4 :(得分:0)

(我更希望将其添加为对已接受答案的评论,但代码不合适。)

我认为以下功能可以消除一些不必要的重启。 PendingFileRenameOperations 注册表项不仅支持重命名,还支持删除(本质上表示为“重命名为空”)*。我所做的假设是删除代表在此期间不会影响功能的挂起清理操作。

<#
.SYNOPSIS
Returns true if any true renames-- deletes are ignored-- are present in the
PendingFileRenameOperations registry key.
#>
function Test-PendingFileRename {
    [OutputType('bool')]
    [CmdletBinding()]
    param()
    $operations = (Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\').GetValue('PendingFileRenameOperations')
    if ($null -eq $operations) {
        $false
    } else {
        $trueOperationsCount = $operations.Length / 2
        $trueRenames = [System.Collections.Generic.Dictionary[string, string]]::new($trueOperationsCount)
        for ($i = 0; $i -ne $trueOperationsCount; $i++) {
            $operationSource = $operations[$i * 2]
            $operationDestination = $operations[$i * 2 + 1]
            if ($operationDestination.Length -eq 0) {
                Write-Verbose "Ignoring pending file delete '$operationSource'"
            } else {
                Write-Host "Found a true pending file rename (as opposed to delete). Source '$operationSource'; Dest '$operationDestination'"
                $trueRenames[$operationSource] = $operationDestination
            }
        }
        $trueRenames.Count -gt 0
    }
}

通过在顶部插入上述函数然后替换该行,可以在已接受答案的脚本中实现这一点

if (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore) { return $true }

if (Test-PendingFileRename) { return $true }

* 参考: