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. P>
6 Réponses :
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
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 code>
Parce que vous avez demandé PowerShell:
(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null)
Échoue avec erreur: Get-WMIObject: l'accès est refusé.
$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
Échoue avec erreur: Get-WMIObject: l'accès est refusé.
in PowerShell 2.0, exécutez les éléments suivants à partir de l'invite CMD:
invoke-command -computername <yourremoteservername> -scriptblock {iisreset}
Échoue avec erreur: ... Le client WinRM ne peut pas traiter la demande ....
Option 1:
Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}
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 ....
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()
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.