如何使用Powershell脚本执行IISRESET

如何使用Powershell脚本执行IISRESET,iis,powershell,Iis,Powershell,有人知道如何使用PowerShell脚本执行IISRESET吗?我正在使用PowerGUI编辑器,并将PowerShell 1.0安装在Windows 2008机箱上。不确定您要查找的确切内容,但创建一个包含“iisreset/noforce”主体的脚本 下面是一个示例:我知道这已经很旧了,但您可以从Powershell的命令行运行任何命令行进程。因此,您只需要一个脚本,该脚本使用您需要的任何开关调用IISReset。您可以使用Invoke命令cmdlet执行此操作: invoke-comman

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

不确定您要查找的确切内容,但创建一个包含“iisreset/noforce”主体的脚本


下面是一个示例:

我知道这已经很旧了,但您可以从Powershell的命令行运行任何命令行进程。因此,您只需要一个脚本,该脚本使用您需要的任何开关调用IISReset。

您可以使用Invoke命令cmdlet执行此操作:

invoke-command -scriptblock {iisreset}
更新

还可以使用&call操作符简化命令:


&{iisreset}

我发现使用最简单的命令


D:\PS\psexec\server\u name iisreset

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

Start-Process -FilePath C:\Windows\System32\iisreset.exe -ArgumentList /RESTART -RedirectStandardOutput .\iisreset.txt
Get-Content .\iisreset.txt | Write-Log -Level Info
Write-Log cmdlet是我用于记录日志的自定义cmdlet,但您可以用其他cmdlet替代它。

IIS停止或启动(已测试)

使用
和{iisreset}
时偶尔会出现故障,这让我想到:

启动进程“iisreset.exe”-非Windows-等待


现在它等待
iisreset.exe
优雅地结束。

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

$servers = @()
$servers += 'server1'
$servers += 'server2'
...
$servers += 'serverN'
由于
iisreset.exe
不支持多值参数,我们必须将其包装在一个循环中:

$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陷入停止状态

是否有完整源代码示例的最终解决方案?
$servers | %{ iisreset $_ /status }
$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /status | Select-String "Stopped" }