2016-10-07 2 views
1

OU = _ - это частное название компании. Я знаю, что это перезапуск, это только для тестирования, прежде чем он перейдет в настоящий процесс hutdown.Выключение удаленного компьютера PowerShell, одного ПК

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 дней, и это не то, что я хочу. Как я могу сказать сценарию, чтобы выключить ПК, когда они уже работают более двух дней?

ответ

0

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

Restart-Computer $_ -Force 

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

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

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

+0

Я решил Restart-Computer $ _ -Force только сейчас, я думаю, что это работает. Я не тестировал это со временем, потому что на ПК я хочу отключить сеть онлайн достаточно долго, но в понедельник я буду тестировать ее более тщательно. Если это не сработает, я попробую другое решение, спасибо. – Gunter

Смежные вопросы