Удаленное взаимодействие через массив веб-серверов для развертывания кода - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу просмотреть несколько веб-серверов и модуль импорта WebAdministration, чтобы изменить некоторые свойства утилизации.

Проблема в том, что foreach не любит использовать его для удаленных сессий.Я предполагаю, что это потому, что один блок кода может быть выполнен только за 1 удаленный сеанс?Есть ли способ пролистать несколько сессий или я должен сделать это вручную?

Просто хочу узнать, как написать код для развертывания во всех моих apppools на всех моих серверах.

Я протестировал подстановочный знак в каталоге appPool, и это, похоже, работает.

IIS10 Powershell 5.1.14393.2189

$servers = @("MyEnvironment-web01","MyEnvironment-web02","MyEnvironment-web03")
foreach ($server in $servers) {
    enter-Pssession -ComputerName $server
    Write-Host $server
    Read-Host -Prompt "Press Enter to continue" #This was added because I thought maybe it just needed time to connect? Doesn't need to be in here.
    import-module WebAdministration
        Get-ItemProperty -Path IIS:\AppPools\*
        exit-PSSession
        }

Многое из этого: import-module: Указанный модуль 'WebAdministration' не был загружен, поскольку ни в одном каталоге модулей не было найдено допустимого файла модуля.В строке: 1 символ: 1

Что странно, потому что это прекрасно работает, если я запускаю цикл for-each вручную.За исключением примерно 20% случаев, когда это не так ...

Я готов поспорить, что я поступаю по этому поводу ВСЕ неправильно.

1 Ответ

0 голосов
/ 02 апреля 2019
$Cred = Get-Credential -UserName <domain\user> -Message 'Enter Password'
$servers = @("myserver1"."myserver2","etc")
foreach ($server in $servers) {
    Invoke-Command -ComputerName $server -Credential $cred {
    import-module WebAdministration
    Get-ItemProperty -Path IIS:\AppPools\*
    }
}
...