PowerShell IIS: WebAdmin Remote Invocation Trigger WsAstartup Errore, wsanotinitialis

StackOverflow https://stackoverflow.com/questions/9433886

  •  12-11-2019
  •  | 
  •  

Domanda

Sto usando PSRemoting con il modulo di amministrazione Web per ottenere informazioni su vari siti e funziona. Tuttavia, sto ricevendo una fastidiosa eccezione non fatale durante l'invocazione del comando e mi chiedo se qualcun altro l'ha risolta. Ecco un'implementazione minima:

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")
}

Ed ecco i risultati:

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

Osservo che il risultato viene restituito prima che l'errore venga lanciato.

Dettagli divertenti:
-get-website, get-elem "iis: ...", get-webbinding tutti i risultati nello stesso errore
- Esecuzione del comando $ direttamente sulla macchina target come risultati scritti in nessun errore
- Get-Item "D: ..." non provoca alcun errore
- L'errore com no

È stato utile?

Soluzione 2

Questo è sepolto da qualche parte in profondità nelle viscere dell'implementazione di .NET e Winsock da parte di PowerShell. È al di sotto di tutto ciò che posso calibrare, quindi ho aggiunto "ERRORAZIONE SilentlyContinue" al mio remoto invoke. Non risolve nulla, ma tutto funziona correttamente. Questa è una risposta abbastanza per ora, immagino.

Altri suggerimenti

Sono stato in grado di aggirare il problema usando quanto segue:

    $iisIpAddresses = Invoke-Command -Session $session -scriptblock {
    if (!(Get-Module WebAdministration)) 
    {
        Import-Module WebAdministration
    }
    $iisBindings = Get-WebBinding
    [String[]]$iisBindings = $iisBindings | Select bindingInformation
    $iisBindings
}

Remove-PSSession $session
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top