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.
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}
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.
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
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.
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