有没有人知道如何使用PowerShell脚本执行IISRESET?我正在使用PowerGUI编辑器,在Windows 2008机器上安装了PowerShell 1.0。
答案 0 :(得分:31)
您可以使用Invoke-Command cmdlet执行此操作:
invoke-command -scriptblock {iisreset}
<强>更新强>:
您还可以使用&amp; amp;来简化命令。呼叫运营商:
& {iisreset}
答案 1 :(得分:3)
这适合我。在这个应用程序中,我不关心返回代码:
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,但您可以替换其他内容。
答案 2 :(得分:1)
不确定您要查找的内容,但创建一个主体为“iisreset / noforce”的脚本
以下是一个示例:http://technet.microsoft.com/en-us/library/cc785436.aspx
答案 3 :(得分:1)
我知道这很老了,但您可以从Powershell的命令行运行任何命令行进程。所以你只需要一个用你需要的任何开关调用IISReset的脚本。
答案 4 :(得分:1)
偶尔使用<ng-template #popContent let-greeting="greeting">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Crested_Tern_Tasmania_%28edit%29.jpg/1600px-Crested_Tern_Tasmania_%28edit%29.jpg"
width="200px"
height="140px">
</ng-template>
导致我这样做:
& {iisreset}
现在等待Start-Process "iisreset.exe" -NoNewWindow -Wait
优雅地结束。
答案 5 :(得分:0)
WaitForExit and ExitCode work fine
[System.Reflection.Assembly]::LoadWithPartialName("System.Diagnostics").FullName
$procinfo = New-object System.Diagnostics.ProcessStartInfo
$procinfo.CreateNoWindow = $true
$procinfo.UseShellExecute = $false
$procinfo.RedirectStandardOutput = $true
$procinfo.RedirectStandardError = $true
$procinfo.FileName = "C:\Windows\System32\iisreset.exe"
$procinfo.Arguments = "/stop"
$proc = New-Object System.Diagnostics.Process
$proc.StartInfo = $procinfo
[void]$proc.Start()
$proc.WaitForExit()
$exited = $proc.ExitCode
$proc.Dispose()
Write-Host $exited
答案 6 :(得分:0)
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"
}
我强烈建议在执行 /status
操作之前使用 /reset
测试您的脚本:
$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 卡在 Stopped 状态。答案 7 :(得分:-2)
我发现使用下面最简单的简单命令。
D:\ PS \ psexec \ server_name iisreset