Чтобы сделать это удаленно от PowerShell, необходимо или использовать дистанционную работу PowerShell или использовать WMI.
Это - на самом деле очень простое использование Вызвать-WMIMethod PowerShell cmdlet, но необходимо указать -Authentication PacketPrivacy
... и если необходимо указать различные учетные данные, можно сделать это с параметром -Credential (Get-Credential)
... вот пример:
$pc = "serverName"
## List the app pools, note the __RELPATH of the one you want to kill:
Get-WMIObject IISApplicationPool
-Computer $pc
-Namespace root\MicrosoftIISv2
-Authentication PacketPrivacy
## Recycle a specific one:
$Name = "W3SVC/APPPOOLS/ASP.NET v4.0 Classic" ## This is the Name from above
$Path = "IISApplicationPool.Name='$Name'" ## This is the __RELPATH
Invoke-WMIMethod Recycle
-Path $Path
-Computer $pc
-Namespace root\MicrosoftIISv2
-Authentication PacketPrivacy
Я записал хорошую функцию для обертывания всего это: http://poshcode.org/2466
Я бы сказал, что вариант 3 является лучшим уровнем изоляции и предотвращает влияние изменений в промежуточной среде на вашу производственную среду. Также ваше предположение об одном VPC на регион кажется неверным. Насколько мне известно, вы можете создать несколько VPC в одном регионе.
«Поскольку у меня может быть только один VPC на регион Amazon, мне придется делать это в отдельном регионе».
Я бы предложил использовать Вариант 2 . По мере роста инфраструктуры AWS вам потребуются службы каталогов (серверы имен, каталог пользователей, каталог виртуальных машин, службы поиска и т. Д.). Если у вас два VPC, совместное использование служб каталогов будет непросто. Также, если вам нужен репозиторий кода (например, GitHub) или инструменты сборки (например, Jenkins), имеющие три отдельных VPC для DEV, этапы и производство значительно усложнят задачу.
Я бы предложил отдельный vpc для каждой среды. Все общие ресурсы могут быть размещены в общем vpc и иметь пиринг между каждой из сред к общему vpc