specific script run remoto remote pssession how computer commands powershell powershell-remoting

script - ¿Qué significa que PowerShell 2.0 será "compatible con firewall"?



session specific commands in powershell (4)

Estoy interesado en ejecutar scripts de PowerShell en una computadora detrás de un firewall. ¿Qué puertos necesitaré tener abiertos? ¿Será necesaria alguna configuración especial o solo podré conectarme a una nueva instalación de Windows Server 2008 r2 y comenzar a ejecutar mis scripts?


Los puertos que necesita abrir dependen completamente de lo que planea hacer en sus scripts.


PowerShell 2 hará la conexión remota a través de WinRM (WinRM ya está disponible, desde Windows 2003 R2, IIRC). WinRM es simplemente SOAP sobre HTTP [S]. Entonces el puerto es 80 por defecto, 443 para SSL por defecto.

Aquí hay una descripción general rápida sobre comunicación remota de PS2 , y una sobre WinRM para 2003.


MichaelGG lo hizo bien, todo lo que tienes que hacer es usar la comunicación remota nativa disponible en PowerShell V2. Le da un grado loco de control sobre la creación de redes utilizando el protocolo WS-MAN (que es un protocolo de gestión estándar que implementa nuestro servicio WINRM).

La forma en que funciona el V2 remoto es que puede invocar un comando (comando único, canalización, conjunto de comandos o script completo) en una máquina remota y especificar cómo desea que se ejecute ese comando.

por ejemplo, Invoke-Command {get-process} -Computername (cat servers.txt)

Invoke-Command (1)-ScriptBlock | -Command <ScriptBlock> (0)[-ComputerName | -Cn <String[]>] [-ApplicationName <String>] [-ArgumentList | -Args <Object[]>] [-AsJob ] [-Authentication <Basic | Credssp | Default | Digest | Kerberos | Negotiate | NegotiateWithImplicitCredential>] [-CertificateThumbprint <String>] [-ConfigurationName <String>] [-Credential <PSCredential>] [-HideComputerName | -HCN ] [-InputObject <PSObject> (ByValue)] [-JobName <String>] [-Port <1->] [-SessionOption <System.Management.Automation.Remoting.PSSessionOption>] [-ThrottleLimit <Int>] [-UseSSL ]

También puede proporcionar SessionOptions

New-WSManSessionOption [-NoEncryption ] [-OperationTimeout <0->] [-ProxyAccessType <ProxyAutoDetect | ProxyIEConfig | ProxyNoProxyServer | ProxyWinHttpConfig>] [-ProxyAuthentication <Basic | Digest | Negotiate>] [-ProxyCredential <PSCredential>] [-SkipCACheck ] [-SkipCNCheck ] [-SkipRevocationCheck ] [-SPNPort <0->] [-UseUTF16 ] New-WSManSessionOption [-NoEncryption ] [-OperationTimeout <0->] [-ProxyAccessType <ProxyAutoDetect | ProxyIEConfig | ProxyNoProxyServer | ProxyWinHttpConfig>] [-ProxyAuthentication <Basic | Digest | Negotiate>] [-ProxyCredential <PSCredential>] [-SkipCACheck ] [-SkipCNCheck ] [-SkipRevocationCheck ] [-SPNPort <0->] [-UseUTF16 ]

Como puede ver, puede especificar cómo recorrer los proxies, puede proporcionar un conjunto de credenciales para el proxy y un conjunto diferente de credenciales para el punto final. Dicho todo esto, el caso simple es que no especificas nada y usaremos el puerto 80.

¡Experimentar! ¡Disfrutar! ¡Contratar!

Jeffrey Snover [MSFT]
Windows Management Partner Architect