首页 > 解决方案 > Powershell中的for循环执行x个不同的服务器重启

问题描述

我试图使用 PowerShell 脚本执行 x 个不同的服务器重新启动,但是一旦它到达我的 for 循环,它就结束了,我不知道我在哪里犯了错误。

代码:

$x = Read-Host "How much you want to restart"

for ($i=0; $i -eq $x; $i++)
{
    $name = read-host "Enter Servername" $i "to restart"
    Restart-Computer -ComputerName $name -wait
    write-host "Server" $name "restarded"
}

编辑:谢谢我更正的答案,$i++但在输入数字后它仍然会立即结束。

标签: powershellfor-loop

解决方案


将重启代码与收集 COMPUTERNAME 分开封装可能会有所帮助。这样就可以从提示输入名称的脚本或任何其他方法创建计算机列表。

如果您确信将重新启动正确的计算机,请-WhatIfRestart-Computercmdlet 中删除 。

=== 重启.ps1

[cmdletbinding()]
Param (
    [Parameter(Mandatory = $true, Position = 0)]
    [string[]]$ComputerName
)

foreach ($Computer in $ComputerName) {
    Write-Information "reboot $Computer"
    Restart-Computer -ComputerName $Computer -Wait -WhatIf
}

然后,它可以使用:

Do-Reboot -ComputerName SERVER1,SERVER2,SERVER3

如果您想在每次重新启动时在控制台上看到某些内容,请使用:

Do-Reboot -ComputerName SERVER1,SERVER2,SERVER3 -InformationAction Continue

如果您在文本文件中有服务器列表,则可以使用它。

Do-Reboot -ComputerName $(Get-Content -Path '.\rebootlist.txt')

推荐阅读