Я использую PSRemoting с модулем WebAdministration, чтобы получить информацию о различных сайтах, и он работает. Тем не менее, я получаю раздражающее нефатальное COM-исключение во время вызова команды и задаюсь вопросом, разрешил ли кто-либо другой. Вот минимальная реализация:PowerShell IIS: WebAdmin Remote Invocation запускает ошибку WSAStartup, WSANOTINITIALISED
cls
$command = {
param($alias)
Import-Module 'WebAdministration'
$binding = Get-WebBinding -HostHeader $alias
$binding
}
$server = 'server'
$args = @('alias')
$session = New-PSSession -ComputerName $server
Write-Host ("Invoking")
try {
Invoke-Command -Session $session -ScriptBlock $command -ArgumentList $args
Write-Host ("Invoked")
} catch {
Write-Host ("Caught $_")
} finally {
Write-Host ("Removing")
Remove-PSSession -Session $session
Write-Host ("Removed")
}
И вот результаты:
Invoking
protocol : http
bindingInformation : 10.x.x.x:80:alias
...
Schema : Microsoft.IIs.PowerShell.Framework.ConfigurationElementSchema
An unhandled COM interop exception occurred: Either the application has not called WSAStartup, or WSAStartup failed. (Exception from HRESULT: 0x800
7276D)
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : COMException
Invoked
Removing
Removed
я наблюдаю результат возвращается до ошибки броска.
Занимательные детали:
- Get-сайт, Get-Item "IIS: \ ..." Get-WebBinding всего результата в той же самой ошибке
- Запуск $ команды непосредственно на целевой машине в качестве письменных результатов нет ошибки
- Get-Item «d: \ ...» не приводит к какой-либо ошибки
- ошибка СОМ не
Я запускаю этот код из 3 отдельных W2k8 серверов в PowerGUI и Powershell быстрых и против 2-х различных целевых серверов. Во всех случаях я получил ту же ошибку. – codepoke
Интересно, что NetMon показывает, что зашифрованный разговор с/wsman очень похож между неудачным сеансом WebAdmin и «последующим» сеансом Get-Item «d: \». Обе беседы заканчиваются удаленным сервером, отправляющим обратно зашифрованные данные, а затем (к последнему сообщению, теоретически об отключении)? 500 Внутренняя ошибка сервера. Никакой реальной информации нет, так как я не могу расшифровать разговор, но интересен. – codepoke
Поскольку я в сложном режиме, я добавлю, что это важно, потому что мои внутренние клиенты будут видеть ошибку и беспокоят меня. С этой целью, пока я не найду реальное разрешение, я добавил «-ErrorAction SilentlyContinue» к моему удаленному вызову. Он справляется с проблемой. – codepoke