|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Restart-Computer |
|
PowerShell - Restart-Computer
|
Новый участник Сообщения: 48 |
Профиль | Отправить PM | Цитировать Нашел скрипт для проверки статуса "Требуется перезагрузка для завершения установки обновлений". Хочу чтобы серверы ночью перегружались по наличию этого статуса.
Function Get-WURebootStatus { <# .SYNOPSIS Show Windows Update Reboot status. .DESCRIPTION Use Get-WURebootStatus to check if reboot is needed. .PARAMETER Silent Get only status True/False without any more comments on screen. .EXAMPLE Check whether restart is necessary. If yes, ask to do this or don't. PS C:\> Get-WURebootStatus Reboot is required. Do it now ? [Y/N]: Y .EXAMPLE Silent check whether restart is necessary. It return only status True or False without restart machine. PS C:\> Get-WURebootStatus -Silent True .NOTES Author: Michal Gajda Blog : http://commandlinegeeks.com/ .LINK http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc .LINK Get-WUInstallerStatus #> [CmdletBinding( SupportsShouldProcess=$True, ConfirmImpact="Low" )] Param ( [Alias("StatusOnly")] [Switch]$Silent, [String[]]$ComputerName = "localhost", [Switch]$AutoReboot ) Begin { $User = [Security.Principal.WindowsIdentity]::GetCurrent() $Role = (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) if(!$Role) { Write-Warning "To perform some operations you must run an elevated Windows PowerShell console." } #End If !$Role } Process { ForEach($Computer in $ComputerName) { If ($pscmdlet.ShouldProcess($Computer,"Check that Windows update needs to restart system to install next updates")) { if($Env:COMPUTERNAME,"localhost","." -contains $Computer) { Write-Verbose "$($Computer): Using WUAPI" $objSystemInfo= New-Object -ComObject "Microsoft.Update.SystemInfo" $RebootRequired = $objSystemInfo.RebootRequired } #End if $Computer -eq $Env:COMPUTERNAME else { Write-Verbose "$($Computer): Using Registry" $RegistryKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]"LocalMachine",$Computer) $RegistrySubKey = $RegistryKey.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\") $RegistrySubKeyNames = $RegistrySubKey.GetSubKeyNames() $RebootRequired = $RegistrySubKeyNames -contains "RebootRequired" } #End else $Computer -eq $Env:COMPUTERNAME Switch($RebootRequired) { $true { If($Silent) { Return $true } #End If $Silent Else { if($AutoReboot -ne $true) { $Reboot = Read-Host "$($Computer): Reboot is required. Do it now ? [Y/N]" } #End If $AutoReboot -ne $true Else { $Reboot = "Y" } #End else $AutoReboot -ne $true If($Reboot -eq "Y") { Write-Verbose "Rebooting $($Computer)" Restart-Computer -ComputerName $Computer -Force } #End If $Reboot -eq "Y" } #End Else $Silent } #End Switch $true $false { If($Silent) { Return $false } #End If $Silent Else { Write-Output "$($Computer): Reboot is not Required." } #End Else $Silent } #End Switch $false } #End Switch $objSystemInfo.RebootRequired } #End If $pscmdlet.ShouldProcess($Env:COMPUTERNAME,"Check that Windows update needs to restart system to install next updates") } #End ForEach $Computer in $ComputerName } #End Process End{} } #In The End :) В cmd в команде shutdown были параметры указать причину. В powershell Restart-computer (который выполняется в этом скрипте) такого параметра не нашел (мб плохо искал). Кто, чего может подсказать? |
|
Отправлено: 07:02, 20-11-2014 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать У Restart-Computer нет такого параметра. Поэтому самое простое использовать утилиту shutdown или метод Win32ShutdownTracker класса Win32_OperatingSystem - http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx.
|
Отправлено: 08:50, 20-11-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Restart | NIK_46 | Непонятные проблемы с Железом | 14 | 13-12-2010 10:00 | |
ISA 2000 error at restart service !! | dosim | Сетевые технологии | 1 | 05-03-2005 10:37 | |
"Сообщение от COMPUTER ALERT для COMPUTER USER" | Guest | Защита компьютерных систем | 3 | 21-08-2004 23:01 | |
Restart+Restart+Restart=:( | Wlad L | Непонятные проблемы с Железом | 13 | 13-12-2003 05:10 | |
Restart XP дает error!!! | grenata | Microsoft Windows 2000/XP | 41 | 04-03-2003 09:42 |
|