2016-10-07 17 views
1

OU = _は非公開会社名です。私はそれが再起動していることを知っています、これは本当のhutdownプロセスに入る前にテストするためだけです。PowerShellリモートPCシャットダウン、単一のPC

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日以上実行している私の会社のすべてのPCをシャットダウンしようとしています。スクリプトは一種の行われ、それがポイントに来るとき、それがエラーを示している。

restart-Computer $Computer -Force 

私が代わりに$コンピュータ、$ COMPUTERLISTの入力した場合、スクリプトが、彼らはdidntの場合でも、そのOU内のすべてのPCをシャットダウンします2日以上実行してください。 会社全体を閉鎖するのに2台以上のPCを走らせるのは1台のPCだけで、それは私が望むものではありません。 スクリプトを実行して2日以上経過しても、PCの電源をオフにするにはどうすればよいですか?

答えて

0

$Computerは定義されていません。

ただし、変数で再起動してから再起動する必要があるすべてのコンピュータを収集する方が良いでしょう。はるかに高速に動作します:あなたは_ -Forceちょうど今、私はそれがうまくいくと思う私は再起動、コンピューターの$を解決

+0

を好きなら

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

は、あなたの周りのいくつかのより多くのログを追加することができます。私は時間をかけてテストしなかった。なぜなら、私がシャットダウンしたいPCは十分に長くオンラインではないからだ。しかし、月曜日にもっと徹底的にテストするだろう。 それが動作しない場合、私はあなたの他の解決策を試してみるつもりです、ありがとう。 – Gunter

関連する問題