Удаленное завершение работы PowerShell с ПК, один компьютер

#powershell #shutdown

#powershell #завершение работы

Вопрос:

OU=_ — это название частной компании. Я знаю, что это перезапуск, это только для тестирования, прежде чем перейти к реальному процессу hutdown.

 function Get-LastBootUpTime {            
param (
    $ComputerName
)
    $OperatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ComputerName               
    [Management.ManagementDateTimeConverter]::ToDateTime($OperatingSystem.LastBootUpTime)            
}

$Days = -0
$ShutdownDate = (Get-Date).adddays($days)

$ComputerList = Get-ADComputer -SearchBase 'OU=TEST-OU,OU=_,DC=_,DC=_' ` -Filter '*' | Select -EXP Name

$ComputerList | foreach {
    $Bootup = Get-LastBootUpTime -ComputerName $_

    Write-Host "$_ last booted: $Bootup"

    if ($ShutdownDate -gt $Bootup) {
        Write-Host "Rebooting Computer: $_" -ForegroundColor Red
        restart-Computer $Computer -Force
    }
    else {
        Write-Host "No need to reboot: $_" -ForegroundColor Green
    }
}
  

Я пытаюсь отключить все КОМПЬЮТЕРЫ в моей компании, которые работают дольше 2 дней. Сценарий вроде как выполнен, но он показывает ошибку, когда дело доходит до сути:

 restart-Computer $Computer -Force
  

Если я введу вместо $Computer, $ComputerList, скрипт отключит все компьютеры в этом подразделении, даже если они не работали дольше 2 дней.
Таким образом, одному КОМПЬЮТЕРУ требуется работать дольше, чем 2 дня, чтобы закрыть всю компанию, а это не то, чего я хочу.
Как я могу указать сценарию выключать компьютеры только тогда, когда они уже работают более 2 дней?

Ответ №1:

Ваш $Computer не определен. Вы должны использовать:

 Restart-Computer $_ -Force
  

Но лучшим подходом было бы собрать все компьютеры, которые должны перезапускаться, в переменной, а затем полностью перезапустить их. Будет работать намного быстрее:

 $toBeRestarted = $ComputerList | Where-Object { $ShutdownDate -gt (Get-LastBootUpTime -ComputerName $_) }
Restart-Computer $toBeRestarted -Force
  

Вы можете добавить еще несколько журналов, если хотите

Комментарии:

1. Я только что решил проблему перезагрузки компьютера с помощью $ _ -Force, я думаю, это работает. Я не тестировал его со временем, потому что компьютеры, которые я хочу выключить, не подключены достаточно долго, но в понедельник я протестирую его более тщательно. Если это не сработает, я попробую другое ваше решение, спасибо.