У меня есть два сервера Server A и Server B. Я хочу, чтобы сервер A удален с сервера B с помощью Powershell script.
Как запустить/остановить IIS 6.0/7.0 удаленно с помощью сценариев PowerShell?
Ответ 1
Один из простейших способов сделать это - это просто выполнение командной строки с помощью PsExec. И отправьте на машины
IISReset/STOP или /START или/RESTART
Итак, вы сделали бы что-то вроде этого
PsExec \\Server2 -u Administrator -p somePassword IISReset /STOP
Просто будьте осторожны с управлением паролями, если вы идете по этому маршруту или по любому маршруту, который включает какой-то тип олицетворения учетной записи уровня администратора, чтобы никто не мог получить текстовую копию пароля администратора.
Ответ 2
Вариант 1:
iisreset remotepcname /restart
Вариант 2:
(Get-Service -ComputerName remotepc -Name 'IISAdmin').stop()
Вариант 3:
Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}
Ответ 3
Потому что вы попросили Powershell:
(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null)
Согласованный этот вопрос должен быть перенесен в ServerFault.
Ответ 4
$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
Ответ 5
В powershell 2.0 запустите следующую команду из командной строки cmd:
invoke-command -computername <yourremoteservername> -scriptblock {iisreset}
Ответ 6
Вы можете использовать get-wmiobject cmdlt с другим NameSpace для разных версий 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() для своих сайтов.