如何使用Powershell脚本执行IISRESET

8nuwlpux  于 2023-08-05  发布在  Shell
关注(0)|答案(8)|浏览(188)

有人知道如何使用PowerShell脚本执行IISRESET吗?我使用的是PowerGUI编辑器,在Windows 2008机器上安装了PowerShell 1.0。

ou6hu8tu

ou6hu8tu1#

您可以使用Invoke-Command cmdlet执行此操作:

invoke-command -scriptblock {iisreset}

字符串

更新

您还可以使用& call操作符简化命令:
第一个月

34gzjxbg

34gzjxbg2#

在使用& {iisreset}时偶尔会出现故障,这让我想到:
Start-Process "iisreset.exe" -NoNewWindow -Wait
现在它等待iisreset.exe正常结束。

50pmv0ei

50pmv0ei3#

这对我来说很好。在这个应用程序中,我不关心返回代码:

Start-Process -FilePath C:\Windows\System32\iisreset.exe -ArgumentList /RESTART -RedirectStandardOutput .\iisreset.txt
Get-Content .\iisreset.txt | Write-Log -Level Info

字符串
Write-Logcmdlet是我用于日志记录的自定义cmdlet,但您可以用其他东西来替代。

ukxgm1gy

ukxgm1gy4#

我知道这是非常古老的,但你可以从PowerShell的命令行运行任何命令行进程。因此,您只需要一个脚本来调用IISReset,并使用您需要的任何开关。

hs1rzwqc

hs1rzwqc5#

iisreset.exe支持将计算机名称作为参数。下面的示例显示了如何在多个服务器上重置IIS的基本思想:

$servers = @()
$servers += 'server1'
$servers += 'server2'
...
$servers += 'serverN'

字符串
由于iisreset.exe不支持多值参数,我们必须将其 Package 在一个循环中:

$servers | %{ iisreset $_ /restart /noforce }


您可能需要添加简单的监视:

$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /restart /noforce /timeout:30 }


如果您有许多服务器,您可能只对故障感兴趣:

$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /restart /noforce /timeout:30 | Select-String "failed" }


多行版本,可读性更好:

foreach ( $server in $servers ) {
    Write-Host "`n`n$server`n" -NoNewline ; 
    iisreset $server /restart /noforce /timeout:30 | Select-String "failed"
}


我强烈建议在执行/reset操作之前使用/status测试脚本:

$servers | %{ iisreset $_ /status }


您也可以使用/status检查停止的组件:

$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /status | Select-String "Stopped" }

参考资料

  • /restart是默认参数。iisreset.exe在未指定其他操作参数的情况下使用/restart
  • /noforce将在出现错误时阻止iisreset.exe运行。
  • /timeout-有时您需要允许服务器有更多的时间来处理请求,以避免IIS停留在“已停止”状态。
yhqotfr8

yhqotfr86#

不确定您到底在寻找什么,但创建一个脚本,其主体为“iisreset /noforce”
下面是一个例子:http://technet.microsoft.com/en-us/library/cc785436.aspx

frebpwbc

frebpwbc7#

IIS停止或启动(已测试)

WaitForExit and ExitCode work fine

个字符

yeotifhr

yeotifhr8#

我发现使用下面的简单命令是最简单的。
D:\PS\psexec \server_name iisreset

相关问题