如何使用Powershell脚本执行IISRESET

时间:2009-11-03 23:40:37

标签: iis powershell

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

8 个答案:

答案 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)

IIS停止或启动(已测试)

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