11
votes

Comment démarrer / arrêter IIS 6.0 / 7.0 à distance à l'aide des scripts PowerShell?

J'ai deux serveurs serveur A et Server B. Je souhaite arrêter le serveur A du serveur B à distance à l'aide d'un script PowerShell.


2 commentaires

Nous avons besoin de plus d'informations sur la configuration de votre domaine. Les deux serveurs fonctionnent-ils dans le même domaine qu'un compte utilisateur unique a des autorisations équivalentes sur le serveur?


De plus, cette question devrait probablement être déplacée à la faute du serveur.


6 Réponses :


14
votes

L'un des moyens les plus simples de le faire est vraiment avec une exécution de ligne de commande utilisant Psexec . Et envoyer sur les machines

IISRESET / STOP ou / Démarrage ou / redémarrez P>

Donc, vous feriez quelque chose comme ça P>

PsExec \\Server2 -u Administrator -p somePassword IISReset /STOP


2 commentaires

Je reçois une erreur: le terme "psexec" n'est pas reconnu comme le nom d'une cmdlet ...


@steve C'est pourquoi il y a un lien, mais le plus simple est choco installer sysinternals



10
votes

Parce que vous avez demandé PowerShell:

(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null) 


1 commentaires

Échoue avec erreur: Get-WMIObject: l'accès est refusé.



3
votes
$service = Get-WmiObject -computer 'ServerA' Win32_Service -Filter "Name='IISAdmin'"
$service
$service.InvokeMethod('StopService',$Null)
start-sleep -s 5
$service.InvokeMethod('StartService',$Null)
start-sleep -s 5
$service.State

$service = Get-WmiObject -computer 'ServerB' Win32_Service -Filter "Name='IISAdmin'"
$service
$service.InvokeMethod('StopService',$Null)
start-sleep -s 5
$service.InvokeMethod('StartService',$Null)
start-sleep -s 5
$service.State

1 commentaires

Échoue avec erreur: Get-WMIObject: l'accès est refusé.



2
votes

in PowerShell 2.0, exécutez les éléments suivants à partir de l'invite CMD:

invoke-command -computername <yourremoteservername> -scriptblock {iisreset}


1 commentaires

Échoue avec erreur: ... Le client WinRM ne peut pas traiter la demande ....



13
votes

Option 1:

Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}


2 commentaires

Réponse parfaite. Merci.


Tous les trois échouent pour moi. 1) Le terme "IISRESET" n'est pas reconnu comme le nom d'une cmdlet ..., 2) Impossible de trouver un service avec le nom de service 'iisadmin', 3) ... Le client WinRM ne peut pas traiter la demande ....



0
votes

Vous pouvez utiliser Get-WmiObject CMDLT avec un espace de noms différent pour différentes versions de IIS V6 ou V7, sous la commande de pipelining peut être utilisé pour de telles opérations dans IIS localement ou à distance

pour IIS V6 P>

$srv = "Server Name or IP Address"

$app = "Name of App Pool"

$x = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" -ComputerName $srv -Authentication PacketPrivacy | where-object {$_.Name -eq "W3SVC/AppPools/$app"}

$x.Stop()

$x.Start()

for IIS v7

$srv = "Server Name or IP Address"

$app = "Name of App Pool"

$x = Get-WMIObject -Namespace "root\webAdministration" -Class "ApplicationPool" -ComputerName $srv -Authentication PacketPrivacy | Where-Object {$_.Name -eq $app}

$x.Stop()

$x.Start()


0 commentaires