Удаленный перезапуск в безопасном режиме? (окна)
Я знаю, что вы можете удаленно завершить работу машины Windows с помощью командной строки "shutdown". Но я думаю, что невозможно перевести машину в безопасный режим (с сетевым подключением). Кто-нибудь знает способ сделать это?
8 ответов
Если у вас есть права администратора на удаленной машине, это возможно.
Вам нужно отредактировать файл boot.ini (обычно находится в корне диска C:)
Откройте командную строку на вашем локальном компьютере
тип:
EDIT \\MACHINENAME\C$\BOOT.INI
Откроется загрузочный INI-файл, который обычно выглядит примерно так:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"
/noexecute=optin /fastdetect
В конце последней строки нужно добавить
/safeboot:network
последняя строка будет читать что-то вроде
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"
/noexecute=optin /fastdetect /safeboot:network
Сохраните изменения и затем принудительно перезагрузите компьютер из командной строки, и он должен перезапуститься в безопасном режиме с сетью. Не забудьте изменить файл boot.ini обратно, когда вы закончите!
Чтобы перезагрузить Windows 7 в безопасном режиме с сетью, запустите msconfig.exe. На вкладке Boot вы можете выбрать "Безопасная загрузка" и есть флажок для работы в сети.
Я не уверен, будет ли удаленный рабочий стол работать в безопасном режиме. Я использую TightVNC. Чтобы запустить службу TightVNC в безопасном режиме, скопируйте ее запись в реестре в safeboot\network:
REG COPY HKLM\system\CurrentControlSet\services\tvnserver HKLM\system\CurrentControlSet\control\safeboot\network\tvnserver /s /f
Другие сервисы VNC могут быть активированы таким же образом.
Вряд ли для рабочей станции машины. Вам нужно что-то, что дает вам контроль над самой машиной, чтобы сообщить Windows, как загружаться.
Вам больше повезет с серверным оборудованием, так как многие поставщики встраивают возможность удаленного подключения к консоли.
Если у вас есть возможность интерактивного подключения к Windows на компьютере, вы можете использовать MSCONFIG для установки параметра /SAFEBOOT в boot.ini, а затем перезагрузить компьютер. Выполните Start -> Run и введите MSCONFIG, затем на вкладке boot.ini проверьте /SAFEBOOT в Boot Options и выберите, в какой безопасный режим вы хотите загрузиться (в этом случае NETWORK).
Это как раз то, для чего предназначена встроенная опция отключения освещения HP. Редактирование файла boot.ini не сильно поможет, так как вы не сможете войти в систему, так как служба RDP не будет работать. В случае, если это сервер HP, вы можете напрямую подключиться к его консоли через портал https, а также получить доступ к виртуальной "кнопке питания".
Не ответ на вопрос, но, надеюсь, полезно для всех, кто сталкивается с проблемами при попытке этого. Я обнаружил, что, несмотря на перезагрузку в безопасном режиме с сетью, различные службы, включая
Remote Desktop Services
и
Server
(т.е. предоставление доступа SMB к
boot.ini
) не удалось запустить, выдав код ошибки 1084 при запуске через MMC > Services.
В приведенной ниже оболочке PowerShell используется WMI (который, похоже, все еще работает), чтобы вывести удаленный компьютер из безопасного режима и перезапустить его.
Function Repair-RemoteSafeModeBoot {
[CmdletBinding()]
Param (
[Parameter(Mandatory = $true)]
[string]$ComputerName
)
if (-not (Test-Connection -ComputerName $ComputerName -Quiet -Count 1 -ErrorAction 'Stop')) {
throw "Could not ping $ComputerName; no attempt made to fix it"
}
$os = Get-WmiObject -ComputerName $ComputerName -Class 'Win32_OperatingSystem' -ErrorAction 'Stop'
Write-Verbose "Computer $ComputerName last rebooted at $($os.ConvertToDateTime($os.LastBootUpTime))"
$cs = Get-WmiObject -ComputerName $ComputerName -Class 'Win32_ComputerSystem' -ErrorAction 'Stop'
Write-Verbose "Computer $ComputerName bootup state is $($cs.BootupState)"
if ($cs.BootupState -eq 'Normal boot') {
Write-Warning "$ComputerName is not in safe mode; no attempt to fix it was made"
return # we don't want to proceed if the remote device is already in normal mode as we may do more harm than good (unlikely to have any impact tbh; but why risk it)
}
if ($cs.BootupState -ne 'Fail-safe with network boot') {
Write-Warning "$ComputerName has boot up state $($cs.BooupState). I've never tested with these states, so can't say what will happen. Please read up on this & if acceptable to proceed amend this script to enable it for your scenario."
return # probably safe to remove this & continue; but I don't want to be responsible for that decision... Comment this statement out at your own risk
}
# run a command on the remote computer to take it out of safe mode: https://superuser.com/a/706664/156700
$rv = Invoke-WmiMethod –ComputerName $ComputerName -Class 'win32_process' -Name 'create' -ArgumentList 'bcdedit /deletevalue {default} safeboot' -ErrorAction 'Stop' | Select-Object -ExpandProperty ReturnValue
if ($rv -ne 0) {
throw "Attempted to run bcdedit, but received return value $rv implying that the command was unsuccessful"
}
Start-Sleep -Seconds 5 # probably not required; but added to be safe. It's not like 5 seconds is much to ask if you're in this scenario.
#restart the remote computer
$rv = $os.Reboot() | Select-Object -ExpandProperty ReturnValue
if ($rv -ne 0) {
throw "Attempted to reboot the remote device, but received return value $rv, implying that the command was unsuccessful"
}
Write-Information "$ComputerName updated to normal mode & restarted. Wait a few minutes whilst the reboot occurs then try to log in. If you still have issues try rerunning this command with the -Verbose flag enabled to check whether the boot time or mode have changed."
}
Repair-RemoteSafeModeBoot -ComputerName 'MyServer' -Verbose # where MyServer is the name of the remote server in safe mode
Примечание: вы можете просто запустить 3 строки ниже; функция, указанная выше, используется только в качестве удобной оболочки. Я не тестировал приведенный выше командлет; хотя я использовал этот метод без оболочки, поэтому могу сказать, что все отдельные части работают.
$ComputerName = 'MyServer'
Invoke-WmiMethod –ComputerName $ComputerName -Class 'win32_process' -Name 'create' -ArgumentList 'bcdedit /deletevalue {default} safeboot'
(Get-WmiObject -ComputerName $ComputerName -Class 'Win32_OperatingSystem').Reboot()
Примечание. Я пробовал это только на Windows Server 2008 R2. YMMV.
Этот ответ выше о редактировании boot.ini хорош, и все - ЗА ИСКЛЮЧЕНИЕМ… вы не можете изменить файл boot.ini... если вы будете следовать указаниям "Марка" шаг за шагом - вы попадаете в кирпичную стену потому что boot.ini только для чтения.
РЕДАКТИРОВАТЬ: И да.... Я проверил это вошел в систему как администратор.
Если вы допустите эту ошибку, вы, вероятно, сможете перейти к файлу boot.ini через проводник, так что \hostname\C$\boot.ini, и есть вероятность, что вы также сможете удалить "/safeboot: сеть "и сохранить.
Если вы можете сохранить изменения в файле boot.ini, запустите командную строку от имени администратора и попробуйте выполнить эту команду для перезагрузки: shutdown /r /m \hostname /t 00
Надеюсь, с этим вы вернетесь в бизнес!
Если вы поспешно решили изменить BOOT.ini
чтобы перезапустить в безопасном режиме с сетью, а затем перезапустить, вы обнаружите, что вы не можете войти в систему вообще. Скорее всего, вы сможете просмотреть загрузочный файл \\machinename\C$\boot.ini
, но не сможет изменить его, потому что он доступен только для чтения. Вы также не сможете "щелкнуть правой кнопкой мыши и снять флажок" только для чтения "", потому что вы не сможете перейти к C$
каталог на всех. Теперь мне нужно физически войти на эту виртуальную рабочую станцию, чтобы изменить boot.ini
назад. Я никогда не сделаю эту ошибку снова!
Что случилось с файлом boot.ini?
Windows 7 Подробнее
В более ранних версиях Windows boot.ini был системным файлом, который содержал информацию об операционных системах Windows, установленных на компьютере. Эта информация отображалась в процессе запуска, когда вы включали компьютер. Это было наиболее полезно в конфигурациях с несколькими загрузками или для опытных пользователей или администраторов, которым необходимо было настроить способ запуска Windows.
В этой версии Windows файл boot.ini был заменен данными конфигурации загрузки (BCD). Этот файл более универсален, чем boot.ini, и он может применяться к компьютерным платформам, которые используют другие средства, кроме базовой системы ввода / вывода (BIOS), для запуска компьютера.
Если вам нужно внести изменения в BCD, например, удалить записи из списка отображаемых операционных систем, используйте инструмент командной строки Bcdedit, расширенный инструмент, предназначенный для администраторов и ИТ-специалистов. Для получения технической информации о Bcdedit перейдите на веб-сайт Microsoft для ИТ-специалистов.
Если ваш компьютер является мультизагрузочной конфигурацией, вы все равно можете изменить, какая операционная система Windows открывается по умолчанию и как долго отображать список операционных систем, используя Систему на Панели управления.
- Откройте систему, нажав кнопку "Пуск" Изображение кнопки "Пуск", щелкнув правой кнопкой мыши "Компьютер" и выбрав "Свойства".
2.На левой панели щелкните "Дополнительные параметры системы". Требуется разрешение администратора. Если вас попросят ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.
3. Перейдите на вкладку "Дополнительно", а затем в разделе "Запуск и восстановление" нажмите "Настройки".
4.При запуске системы выберите операционную систему по умолчанию и время отображения списка операционных систем, нажмите кнопку "ОК", а затем снова нажмите кнопку "ОК".
http://windows.microsoft.com/en-ca/windows/what-happened-boot-ini-file