Ho due server Server A e Server B. Voglio arrestare il server A dal Server B in remoto usando lo script PowerShell.Come avviare/arrestare IIS 6.0/7.0 in remoto usando gli script di PowerShell?
risposta
Uno dei modi più semplici per eseguire questa operazione è con una semplice esecuzione da riga di comando utilizzando PsExec. E inviare oltre alle macchine
IISReset/STOP o/START o/riavvio
così si potrebbe fare qualcosa di simile
PsExec \\Server2 -u Administrator -p somePassword IISReset /STOP
Basta essere attenti con la gestione delle password, se seguire questa strada o qualsiasi percorso che coinvolge qualche tipo di rappresentazione di account a livello di amministratore in modo che nessuno possa ottenere una copia di solo testo della password di amministratore.
Perché hai chiesto PowerShell:
(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null)
D'accordo a questa domanda dovrebbe essere spostato a ServerFault.
$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
in PowerShell 2.0, eseguire il seguente dal prompt di cmd:
invoke-command -computername <yourremoteservername> -scriptblock {iisreset}
Opzione 1:
iisreset remotepcname /restart
Opzione 2:
(Get-Service -ComputerName remotepc -Name 'IISAdmin').stop()
Opzione 3:
Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}
Risposta perfetta. Grazie. –
È possibile utilizzare cmdlt get-WmiObject con NameSpace diverso per le diverse versioni di V6 IIS o v7, sotto comando pipelining può essere utilizzato per tali operazioni in IIS localmente o in remoto
per IIS v6
$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()
è necessario disporre di privilegi di account sufficienti per queste operazioni, evento anche se preferisco fare $ x.Recycle() per i miei siti web.
Abbiamo bisogno di ulteriori informazioni sulla configurazione del tuo dominio. Entrambi i server operano nello stesso dominio che un singolo account utente ha autorizzazioni equivalenti sul server? –
Anche questa domanda dovrebbe probabilmente essere spostata su errore del server. –