有人知道如何使用PowerShell脚本执行IISRESET吗?我使用的是PowerGUI编辑器,在Windows 2008机器上安装了PowerShell 1.0。
ou6hu8tu1#
您可以使用Invoke-Command cmdlet执行此操作:
invoke-command -scriptblock {iisreset}
字符串
更新:
您还可以使用& call操作符简化命令:第一个月
34gzjxbg2#
在使用& {iisreset}时偶尔会出现故障,这让我想到:Start-Process "iisreset.exe" -NoNewWindow -Wait个现在它等待iisreset.exe正常结束。
& {iisreset}
Start-Process "iisreset.exe" -NoNewWindow -Wait
iisreset.exe
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,但您可以用其他东西来替代。
ukxgm1gy4#
我知道这是非常古老的,但你可以从PowerShell的命令行运行任何命令行进程。因此,您只需要一个脚本来调用IISReset,并使用您需要的任何开关。
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测试脚本:
/reset
/status
$servers | %{ iisreset $_ /status }
型您也可以使用/status检查停止的组件:
$servers | %{ Write-Host "`n`n$_`n" -NoNewline ; iisreset $_ /status | Select-String "Stopped" }
型
参考资料
/restart
/noforce
/timeout
yhqotfr86#
不确定您到底在寻找什么,但创建一个脚本,其主体为“iisreset /noforce”下面是一个例子:http://technet.microsoft.com/en-us/library/cc785436.aspx
frebpwbc7#
WaitForExit and ExitCode work fine
个字符
yeotifhr8#
我发现使用下面的简单命令是最简单的。D:\PS\psexec \server_name iisreset
8条答案
按热度按时间ou6hu8tu1#
您可以使用Invoke-Command cmdlet执行此操作:
字符串
更新:
您还可以使用& call操作符简化命令:
第一个月
34gzjxbg2#
在使用
& {iisreset}
时偶尔会出现故障,这让我想到:Start-Process "iisreset.exe" -NoNewWindow -Wait
个现在它等待
iisreset.exe
正常结束。50pmv0ei3#
这对我来说很好。在这个应用程序中,我不关心返回代码:
字符串
Write-Logcmdlet是我用于日志记录的自定义cmdlet,但您可以用其他东西来替代。
ukxgm1gy4#
我知道这是非常古老的,但你可以从PowerShell的命令行运行任何命令行进程。因此,您只需要一个脚本来调用IISReset,并使用您需要的任何开关。
hs1rzwqc5#
iisreset.exe
支持将计算机名称作为参数。下面的示例显示了如何在多个服务器上重置IIS的基本思想:字符串
由于
iisreset.exe
不支持多值参数,我们必须将其 Package 在一个循环中:型
您可能需要添加简单的监视:
型
如果您有许多服务器,您可能只对故障感兴趣:
型
多行版本,可读性更好:
型
我强烈建议在执行
/reset
操作之前使用/status
测试脚本:型
您也可以使用
/status
检查停止的组件:型
参考资料
/restart
是默认参数。iisreset.exe
在未指定其他操作参数的情况下使用/restart
/noforce
将在出现错误时阻止iisreset.exe
运行。/timeout
-有时您需要允许服务器有更多的时间来处理请求,以避免IIS停留在“已停止”状态。yhqotfr86#
不确定您到底在寻找什么,但创建一个脚本,其主体为“iisreset /noforce”
下面是一个例子:http://technet.microsoft.com/en-us/library/cc785436.aspx
frebpwbc7#
IIS停止或启动(已测试)
个字符
yeotifhr8#
我发现使用下面的简单命令是最简单的。
D:\PS\psexec \server_name iisreset