我需要帮助。我正在尝试制作一个批处理文件来重新启动网络上的计算机,并发送哪些计算机成功重新启动以及哪些计算机没有重新启动的日志。我知道重新启动的命令是shutdown -r,但我不确定如何让它发送日志文件。我正在尝试做的快速概述是:
在 (时间) 警告已登录的用户计算机将在 30 分钟后重新启动,并在重新启动前保存其工作。在 (时间) 警告用户计算机将在 5 分钟后重新启动,并在重新启动前保存其工作。在 (时间) 关机 -r 成功/失败重启后发送日志(工作站在 成功/失败重启)时间) 至(服务器/文件夹)
如果您需要更多信息,请告诉我
答案1
这需要从一台未关闭的服务器运行。它将向 $Servers 列表中定义的所有计算机发送一条消息,内容是“这台计算机将在 30 分钟内关闭。然后休眠 30 分钟,然后发送重启命令并将所有数据写入日志文件,记录它们恢复所需的时间(如果它们恢复的话)。:
$Servers = "computer1", "computer2", "computer3"
$StartTime = Get-Date
$logFile = "C:\temp\log.txt"
Workflow Workflow-Restart
{
param (
[DateTime]$StartTime,
[string[]]$Servers
)
foreach -parallel($server in $Servers)
{
$RestartTimer = "1800" #30 minutes in seconds
$Message1 = "Computer will be restarted in 30 minutes."
#Send message #1
MSG * /SERVER:$server /TIME:30 $Message1
Start-Sleep -Seconds $RestartTimer
Restart-Computer -PSComputerName $server -For PowerShell -Force -Wait
$EndTime = Get-Date
$minutes = (New-TimeSpan $StartTime $EndTime).Minutes
$seconds = (New-TimeSpan $StartTime $EndTime).Seconds
Write-Output "Time Taken for $server to come online: $minutes minutes : $seconds seconds" | Out-File $logFile -Append
}
}
Workflow-Restart $StartTime $Servers