Как запустить / остановить IIS 6.0 / 7.0 удаленно с помощью скриптов PowerShell? - PullRequest
11 голосов
/ 31 августа 2009

У меня есть два сервера: сервер A и сервер B. Я хочу удаленно остановить сервер A с сервера B, используя скрипт Powershell.

Ответы [ 6 ]

14 голосов
/ 31 августа 2009

Один из самых простых способов сделать это - просто выполнить из командной строки, используя PsExec . И отправить к машинам

IISReset / STOP или / START или / RESTART

Так что вы бы сделали что-то вроде этого

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

Просто будьте осторожны с управлением паролями, если вы идете этим путем или любым путем, который включает в себя какой-то тип олицетворения учетной записи уровня администратора, чтобы никто не мог получить текстовую копию пароля администратора.

11 голосов
/ 22 февраля 2013

Вариант 1:

iisreset remotepcname /restart

Вариант 2:

(Get-Service -ComputerName remotepc -Name 'IISAdmin').stop()

Вариант 3:

Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}
9 голосов
/ 10 сентября 2009

Потому что вы спросили о Powershell:

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

Согласованный этот вопрос следует перенести в ServerFault.

3 голосов
/ 06 января 2012
$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
2 голосов
/ 23 июня 2012

В powershell 2.0 выполните следующую команду из командной строки:

invoke-command -computername <yourremoteservername> -scriptblock {iisreset}
0 голосов
/ 16 мая 2013

Вы можете использовать get-wmiobject cmdlt с другим пространством имен для разных версий IIS v6 или v7, ниже команда конвейеризации может использоваться для таких операций в IIS локально или удаленно

для 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()

вам необходимо иметь достаточные привилегии для этих операций, хотя я предпочитаю использовать $ x.Recycle () для моих сайтов.

...