PowerShell远程PC关机,单台PC
PowerShell remote PC shutdown, single PC
OU=_ 是私人公司名称。我知道它重启了,这只是为了在进入真正的关机过程之前进行测试。
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
如果我输入的不是 $Computer,$ComputerList 脚本将关闭该 OU 中的每台 PC,即使它们 运行 的时间不超过 2 天。
所以只需要一台 PC 运行 超过 2 天就可以关闭整个公司,而这不是我想要的。
当 PC 已经 运行 超过 2 天时,我如何告诉脚本只关闭 PC?
您的 $Computer
未定义。你应该使用:
Restart-Computer $_ -Force
但更好的方法是将所有应该重新启动的计算机收集到一个变量中,然后一起重新启动它们。会工作得更快:
$toBeRestarted = $ComputerList | Where-Object { $ShutdownDate -gt (Get-LastBootUpTime -ComputerName $_) }
Restart-Computer $toBeRestarted -Force
如果您愿意,可以添加更多日志记录
OU=_ 是私人公司名称。我知道它重启了,这只是为了在进入真正的关机过程之前进行测试。
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
如果我输入的不是 $Computer,$ComputerList 脚本将关闭该 OU 中的每台 PC,即使它们 运行 的时间不超过 2 天。 所以只需要一台 PC 运行 超过 2 天就可以关闭整个公司,而这不是我想要的。 当 PC 已经 运行 超过 2 天时,我如何告诉脚本只关闭 PC?
您的 $Computer
未定义。你应该使用:
Restart-Computer $_ -Force
但更好的方法是将所有应该重新启动的计算机收集到一个变量中,然后一起重新启动它们。会工作得更快:
$toBeRestarted = $ComputerList | Where-Object { $ShutdownDate -gt (Get-LastBootUpTime -ComputerName $_) }
Restart-Computer $toBeRestarted -Force
如果您愿意,可以添加更多日志记录