web-dev-qa-db-fra.com

Comment effectuer IISRESET avec le script Powershell

Quelqu'un sait-il comment exécuter IISRESET avec un script PowerShell? J'utilise l'éditeur PowerGUI avec PowerShell 1.0 installé sur une boîte Windows 2008.

29
Jukeman

Vous pouvez le faire avec l'applet de commande Invoke-Command:

invoke-command -scriptblock {iisreset}

MISE À JOUR :

Vous pouvez également simplifier la commande à l'aide de l'opérateur & call:

& {iisreset}

32
Jim

Cela fonctionne bien pour moi. Dans cette application, je me fiche du code retour:

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

La cmdlet Write-Log est une cmdlet personnalisée que j'utilise pour la journalisation, mais vous pouvez remplacer quelque chose d'autre.

Ayant utilisé & {iisreset} avec un échec occasionnel m'amène à ceci:

Start-Process "iisreset.exe" -NoNewWindow -Wait

Maintenant, il attend iisreset.exe pour finir gracieusement.

2
zionyx

Je ne sais pas exactement ce que vous cherchez, mais créez un script avec un corps de "iisreset/noforce"

Voici un exemple: http://technet.Microsoft.com/en-us/library/cc785436.aspx

1
cagreen

Je sais que c'est très ancien, mais vous pouvez exécuter n'importe quel processus de ligne de commande à partir de la ligne de commande de Powershell. Vous auriez donc juste besoin d'un script qui appelle IISReset avec les commutateurs dont vous avez besoin.

1
Sean Long

IIS Stop or Start (testé)

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
0
Dr Coyo