Powershell 2.0, как получить значения из удаленного реестра "\..\WindowsUpdate\Auto Update\RebootRequired"
Я пытаюсь запросить путь в реестре удаленного сервера:
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
Он содержит список всех обновлений, ожидающих перезагрузки (REG_DWORD), и, возможно, некоторые даты какого-либо рода. Меня интересует только количество ожидающих обновлений.
Выполняя следующий командлет PS, я не получаю ожидаемый результат при запросе пути reg:
$Computer = "Server01"
$HKLM = [UInt32] "0x80000002"
$WMI_Reg = [WMIClass] “\\$Computer\root\default:StdRegProv”
$RegRR = $WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired")
$RegRR =
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
sNames :
Однако, как тест, если я запрашиваю путь одним ключом до этого, исключая "\RebootRequired", тогда это работает, и я могу затем запросить sValues.
$RegRR = $WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
sNames : {Power, RequestedAppCategories, Results, RebootRequired...}
В конечном счете, я хочу запросить этот ключ reg, чтобы вернуть количество обновлений, ожидающих перезагрузки, существующих записей DWORD. Существует дата RebootRequiredSince, которая поначалу могла бы быть полезной, но выяснилось, что это есть не на всех наших серверах (смесь 2008 R2 и 2012).
Есть идеи?
Спасибо
1 ответ
Убедитесь, что вы включите RemoteRegistry
Сервис на целевой машине, тогда вы можете попробовать:
$Computer = "RemoteComputerName"
$RootKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$Computer)
$SubKey = $RootKey.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update\\RebootRequired")
Чтобы получить все доступные значения, вы можете сделать:
$SubKey.GetValueNames()
Чтобы получить все имена подключей:
$SubKey.GetSubKeyNames()
Чтобы получить конкретное значение:
$SubKey.GetValue("ValueName")
Чтобы получить значение ключа по умолчанию:
$SubKey.GetValue($null)