Está en la página 1de 10

TEMA

about_Remote_FAQ
DESCRIPCIN BREVE
Contiene preguntas y respuestas referentes a la ejecucin de
comandos remotos en Windows PowerShell.
DESCRIPCIN DETALLADA
Cuando se trabaja de forma remota, se escriben los comandos de
Windows PowerShell en un equipo (denominado "equipo local"),
pero los comandos se ejecutan en otro equipo (denominado "equipo
remoto"). En la medida de lo posible, la experiencia a la hora de
trabajar de forma remota debera ser similar a la de trabajar
directamente en el equipo local.
Nota: para poder utilizar la comunicacin remota de Windows
PowerShell, el equipo remoto debe estar configurado para ella.
Para obtener ms informacin, vea about_Remote_Requirements.
AMBOS EQUIPOS DEBEN TENER INSTALADO WINDOWS POWERSHELL?
S. Para poder trabajar de forma remota, el equipo local y el
equipo remoto deben tener Windows PowerShell, Microsoft .NET
Framework 2.0 y el protocolo Web Services for Management
(WS-Management). Los archivos y otros recursos necesarios para
ejecutar un comando concreto deben estar en el equipo remoto.
El usuario debe tener permiso para conectarse al equipo remoto,
permiso para ejecutar Windows PowerShell y permiso para obtener
acceso a los almacenes de datos (por ejemplo, archivos y carpetas)
y al Registro en el equipo remoto.
Para obtener ms informacin, vea about_Remote_Requirements.
CMO FUNCIONA LA COMUNICACIN REMOTA?
Cuando se enva un comando remoto, este se transmite a travs de
la red al motor de Windows PowerShell en el equipo remoto y se
ejecuta en el cliente de Windows PowerShell en dicho equipo.
Los resultados del comando se envan al equipo local y aparecen en
la sesin de Windows PowerShell en dicho equipo.
Para transmitir los comandos y recibir los resultados, Windows
PowerShell utiliza el protocolo WS-Management. Para obtener
informacin sobre el protocolo WS-Management, vea el artculo
referente a este protocolo en MSDN (Microsoft Developer Network)
Library, en http://go.microsoft.com/fwlink/? LinkId=144634
(puede estar en ingls).
LA COMUNICACIN REMOTA DE WINDOWS POWERSHELL ES SEGURA?
Cuando un usuario se conecta a un equipo remoto, el sistema
utiliza el nombre de usuario y la contrasea del equipo local o
las credenciales que se proporcionan en el comando para
conectarse al equipo remoto. Las credenciales y el resto de la
transmisin estn cifrados.

Para agregar proteccin adicional, se puede configurar el equipo


remoto de modo que use Capa de sockets seguros (SSL) en lugar de
HTTP para escuchar las solicitudes de la Administracin remota de
Windows (WinRM). De este modo, los usuarios pueden utilizar los
parmetros UseSSL de los cmdlets Invoke-Command, New-PSSession y
Enter-PSSession al establecer una conexin. Esta opcin utiliza
el canal HTTPS, que es ms seguro, en lugar de HTTP.
TODOS LOS COMANDOS REMOTOS REQUIEREN LA COMUNICACIN REMOTA DE
WINDOWS POWERSHELL?
No. Varios cmdlets tienen un parmetro ComputerName que permite
obtener objetos de equipos remotos.
Estos cmdlets no utilizan la comunicacin remota de Windows
PowerShell. Por lo tanto, dichos cmdlets se pueden usar en
cualquier equipo en el que se ejecute Windows PowerShell, incluso
si el equipo no est configurado para la comunicacin remota de
Windows PowerShell o no cumple los requisitos referentes a la
comunicacin remota de Windows PowerShell.
Estos cmdlets son los siguientes:
Get-Process
Get-Service
Get-WinEvent
Get-EventLog
Get-WmiObject
Test-Connection
Para obtener todos los cmdlets con un parmetro ComputerName, escriba:
get-help * -parameter ComputerName
Para determinar si el parmetro ComputerName de un cmdlet concreto
requiere la comunicacin remota de Windows PowerShell, vea la
descripcin del parmetro. Para mostrar la descripcin del
parmetro, escriba:
get-help <nombre del cmdlet> -parameter ComputerName
Por ejemplo:
get-help get-process -parameter Computername
Para todos los dems comandos, utilice el cmdlet Invoke-Command.
CMO SE EJECUTA UN COMANDO EN UN EQUIPO REMOTO?
Para ejecutar un comando en un equipo remoto, use el cmdlet
Invoke-Command.
Escriba el comando entre llaves ( {} ) para que se convierta en un
bloque de script. Use el parmetro ScriptBlock de Invoke-Command
para especificar el comando.

Puede usar el parmetro ComputerName de Invoke-Command para


especificar un equipo remoto. O bien, puede crear una conexin
persistente con un equipo remoto (sesin) y, a continuacin,
utilizar el parmetro Session de Invoke-Command para ejecutar el
comando en la sesin.
Por ejemplo, los comandos siguientes ejecutan un comando
Get-Process de forma remota.
invoke-command -computername Servidor01, Servidor02 -scriptblock {get-proc
ess}
- O BIEN,
invoke-command -session $s -scriptblock {get-process}
Para interrumpir un comando remoto, presione CTRL+C. La solicitud
de interrupcin se pasa al equipo remoto, donde termina el comando remoto.
Para obtener ms informacin sobre los comandos remotos, vea
about_Remote y los temas de Ayuda referentes a los cmdlets que
admiten la comunicacin remota.
SE PUEDE USAR TELNET PARA TRABAJAR DE FORMA REMOTA?
Se puede usar el cmdlet Enter-PSSession para iniciar una sesin
interactiva con un equipo remoto.
En el smbolo del sistema de Windows PowerShell, escriba:
Enter-PSSession <nombreDelEquipo>
El smbolo del sistema cambia para indicar que se ha conectado al
equipo remoto.
<nombreDelEquipo>\C:>
Ahora, los comandos que escriba se ejecutarn en el equipo remoto
como si los hubiera escrito directamente en el equipo remoto.
Para finalizar la sesin interactiva, escriba:
Exit-PSSession
Una sesin interactiva es una sesin persistente que utiliza el
protocolo WS-Management. No es lo mismo que utilizar Telnet, pero
proporciona una experiencia similar.
Para obtener ms informacin, vea Enter-PSSession.
SE PUEDE CREAR UNA CONEXIN PERSISTENTE?
S. Para ejecutar comandos remotos, debe especificar el nombre
del equipo remoto, su nombre NetBIOS o su direccin IP. O bien,
debe especificar una sesin de Windows PowerShell (PSSession) que
est conectada al equipo remoto.

Cuando se usa el parmetro ComputerName de Invoke-Command o


Enter-PSSession, Windows PowerShell establece una conexin
temporal. Windows PowerShell utiliza la conexin para ejecutar
nicamente el comando actual y, a continuacin, cierra la
conexin. Es un mtodo muy eficaz para ejecutar un solo comando o
varios comandos no relacionados, incluso en varios equipos remotos.
Cuando se usa el cmdlet New-PSSession para crear una PSSession,
Windows PowerShell establece una conexin persistente para la
PSSession. A continuacin, se pueden ejecutar varios comandos en
la PSSession, incluidos comandos que comparten datos.
Se suele crear una PSSession para ejecutar una serie de comandos
relacionados que comparten datos. En otros casos, la conexin
temporal creada por el parmetro ComputerName es suficiente para
la mayora de los comandos.
Para obtener ms informacin sobre las sesiones, vea about_PSSessions.
SE PUEDEN EJECUTAR COMANDOS EN VARIOS EQUIPOS A LA VEZ?
S. El parmetro ComputerName del cmdlet Invoke-Command acepta
varios nombres de equipo y el parmetro Session acepta varias
PSSessions.
Cuando se ejecuta un comando Invoke-Command, Windows PowerShell
ejecuta los comandos en todos los equipos especificados o en todas
las PSSessions especificadas.
Windows PowerShell puede administrar cientos de conexiones remotas
simultneas. Sin embargo, el nmero de comandos remotos que se
pueden enviar puede verse limitado por los recursos del equipo y
su capacidad para establecer y mantener varias conexiones de red.
Para obtener ms informacin, vea el ejemplo en el tema de Ayuda
referente a Invoke-Command.
DNDE SE ENCUENTRAN LOS PERFILES?
Los perfiles de Windows PowerShell no se ejecutan automticamente
en las sesiones remotas, por lo que los comandos que los perfiles
agregan no estn presentes en las sesiones. Adems, la variable
automtica $profile no se rellena en las sesiones remotas.
Para ejecutar un perfil en una sesin, utilice el cmdlet
Invoke-Command.
Por ejemplo, el comando siguiente ejecuta el perfil
CurrentUserCurrentHost del equipo local en la sesin en $s.
invoke-command -session $s -filepath $profile
El comando siguiente ejecuta el perfil CurrentUserCurrentHost del
equipo remoto en la sesin en $s. Dado que no se rellena la
variable $profile, el comando utiliza la ruta de acceso explcita
al perfil.

invoke-command -session $s {. "$home\Documentos\WindowsPowerShell\Micros


oft.PowerShell_profile.ps1"}
Despus de ejecutarse este comando, los comandos que el perfil
agrega a la sesin estarn disponibles en $s.
Asimismo, se puede utilizar un script de inicio en una
configuracin de sesin para ejecutar un perfil en cada sesin
remota que utiliza la configuracin de sesin.
Para obtener ms informacin sobre los perfiles de Windows
PowerShell, vea about_Profiles. Para obtener ms informacin sobre las
configuraciones de sesin, vea Register-PSSessionConfiguration.

CMO FUNCIONA LA LIMITACIN EN LOS COMANDOS REMOTOS?


Para poder administrar
PowerShell incluye una
que permite limitar el
que se establecen para

los recursos en el equipo local, Windows


caracterstica de limitacin por comando
nmero de conexiones remotas simultneas
cada comando.

El valor predeterminado est establecido en 32 conexiones


simultneas, pero se puede utilizar el parmetro ThrottleLimit de
los cmdlets a fin de establecer un lmite personalizado para
comandos concretos.
Cuando utilice esta caracterstica, recuerde que se aplica a cada
comando; no se aplica a la sesin ni al equipo. Si ejecuta
comandos en varias sesiones o PSSessions a la vez, el nmero de
conexiones simultneas es la suma de las conexiones simultneas en
todas las sesiones.
Para obtener los cmdlets con un parmetro ThrottleLimit, escriba:
get-help * -parameter ThrottleLimit
HAY DIFERENCIAS ESPECFICAS DEL SISTEMA EN LA COMUNICACIN REMOTA?
Cuando ejecute comandos en varios equipos, tenga en cuenta las
diferencias entre los equipos remotos, como diferencias en materia
de sistema operativo, estructura del sistema de archivos y Registro.
Cuando se establece una conexin con un equipo remoto en el que se
ejecuta Windows Vista o Windows Server 2003, la ubicacin inicial
predeterminada es el directorio particular del usuario actual, que
est almacenado en la variable de entorno %homepath%
($env:homepath) y la variable $home de Windows PowerShell. En
Windows Vista, el directorio particular suele ser C:\Users\<nombreD
eUsuario>. En Windows Server 2003, el directorio particular suele
ser C:\Documents and Settings\<nombreDeUsuario>.
Cuando se establece una conexin con un equipo remoto en el que se
ejecuta Windows XP, la ubicacin inicial predeterminada es el
directorio particular del usuario predeterminado, que est
almacenado en la variable de entorno %homepath% ($env:homepath)

del usuario predeterminado. El directorio particular suele ser


C:\Documents and Settings\Default User.
EL RESULTADO DE LOS COMANDOS REMOTOS ES DIFERENTE DEL RESULTADO LOCAL?
Cuando se usa Windows PowerShell localmente, se envan objetos
"activos" de .NET Framework. Los objetos "activos" son objetos que
estn asociados a programas o componentes del sistema reales.
Cuando se invocan los mtodos o se cambian las propiedades de los
objetos activos, los cambios afectan al programa o componente
real. Y, cuando cambian las propiedades de un programa o
componente, tambin cambian las propiedades del objeto.
Sin embargo, dado que la mayora de los objetos activos no se
pueden transmitir a travs de la red, Windows PowerShell
"serializa" la mayora de los objetos enviados en los comandos
remotos, es decir, convierte cada objeto en una serie de elementos
de datos XML (Constraint Language in XML [CLiXML]) para la transmisin.
Cuando Windows PowerShell recibe un objeto serializado, convierte
el XML en un tipo de objeto deserializado. El objeto deserializado
es un registro preciso de las propiedades del programa o
componente en un momento anterior, pero ya no est "activo", es
decir, ya no est asociado directamente al componente. Adems, se
quitan los mtodos porque ya no son efectivos.
Normalmente, los objetos deserializados se pueden usar de la misma
manera que los objetos activos, pero se han de tener en cuenta sus
limitaciones. Adems, los objetos devueltos por el cmdlet
Invoke-Command tienen propiedades adicionales que ayudan a
determinar el origen del comando.
Algunos tipos de objeto, como objetos DirectoryInfo y GUID, se
convierten de nuevo en objetos activos en el momento de
recibirlos. Estos objetos no necesitan ningn tratamiento o
formato especial.
Para obtener informacin sobre cmo interpretar y dar formato a
los resultados remotos, vea about_Remote_Output.
SE PUEDEN EJECUTAR TRABAJOS EN SEGUNDO PLANO DE FORMA REMOTA?
S. Un trabajo en segundo plano de Windows PowerShell es un
comando de Windows PowerShell que se ejecuta asincrnicamente sin
interactuar con la sesin. Cuando se inicia un trabajo en segundo
plano, el smbolo del sistema vuelve a aparecer inmediatamente y
se puede continuar trabajando en la sesin mientras se ejecuta el
trabajo, incluso si tarda mucho tiempo en ejecutarse.
Se puede iniciar un trabajo en segundo plano durante la ejecucin
de otros comandos porque los trabajos en segundo plano siempre se
ejecutan asincrnicamente en una sesin temporal.
Se pueden ejecutar trabajos en segundo plano en un equipo local o
en un equipo remoto. De forma predeterminada, los trabajos en
segundo plano se ejecutan en el equipo local. Sin embargo, se
puede usar el parmetro AsJob del cmdlet Invoke-Command para
ejecutar cualquier comando remoto como un trabajo en segundo

plano. Adems, se puede utilizar Invoke-Command para ejecutar un


comando Start-Job de forma remota.
Para obtener ms informacin sobre los trabajos en segundo plano
en Windows PowerShell, vea about_Jobs y about_Remote_Jobs.
SE PUEDEN EJECUTAR PROGRAMAS BASADOS EN WINDOWS EN UN EQUIPO REMOTO?
Se pueden utilizar comandos remotos de Windows PowerShell para
ejecutar programas basados en Windows en un equipo remoto. Por
ejemplo, se puede ejecutar Shutdown.exe o Ipconfig en un equipo remoto.
Sin embargo, no se pueden usar comandos de Windows PowerShell
para abrir la interfaz de usuario de ningn programa en un equipo remoto.
Cuando se inicia un programa basado en Windows en un equipo
remoto, el comando no se completa y no vuelve a aparecer el
smbolo del sistema de Windows PowerShell hasta que finalice el
programa o se presionen las teclas CTRL+C para interrumpir el
comando. Por ejemplo, si ejecuta IpConfig en un equipo remoto, el
smbolo del sistema no vuelve a aparecer hasta que se complete IpConfig.
Si se usan comandos remotos para iniciar un programa que tiene
una interfaz de usuario, se inicia el proceso del programa pero
no aparece la interfaz de usuario. El comando de Windows
PowerShell no se completa y el smbolo del sistema no vuelve a
aparecer hasta que se detenga el proceso del programa o se presionen
las teclas CTRL+C para interrumpir el comando y detener el proceso.
Por ejemplo, si utiliza un comando de Windows PowerShell para
ejecutar Bloc de notas en un equipo remoto, se inicia el proceso
de Bloc de notas en el equipo remoto pero no aparece la interfaz
de usuario de este programa. Para interrumpir el comando y
restaurar el smbolo del sistema, presione CTRL+C.
SE PUEDEN LIMITAR LOS COMANDOS QUE LOS USUARIOS PUEDEN EJECUTAR DE
FORMA REMOTA EN UN EQUIPO LOCAL?
S. Cada sesin remota debe utilizar una de las configuraciones
de sesin en el equipo remoto. Se pueden administrar las
configuraciones de sesin en el equipo local (y los permisos para
dichas configuraciones de sesin) a fin de determinar quin puede
ejecutar comandos de forma remota en el equipo local y qu
comandos se pueden ejecutar.
Una configuracin de sesin configura el entorno de la sesin.
La configuracin se puede definir mediante un ensamblado que
implemente una nueva clase de configuracin o mediante un script
que se ejecute en la sesin.
La configuracin puede determinar los comandos que estn
disponibles en la sesin. Adems, la configuracin puede incluir
valores que protegen el equipo, como valores que limitan la
cantidad de datos que la sesin puede recibir de forma remota en
un solo objeto o comando. Asimismo, se puede especificar un
descriptor de seguridad que determine los permisos necesarios
para utilizar la configuracin.
El cmdlet Enable-PSRemoting crea una configuracin de sesin

predeterminada en el equipo, Microsoft.PowerShell (y


Microsoft.PowerShell32 en los sistemas operativos de 64 bits).
Enable-PSRemoting establece el descriptor de seguridad de la
configuracin de modo que solo los miembros del grupo
Administradores en el equipo puedan usar dicha configuracin.
Se pueden usar los cmdlets de configuracin de sesin para
modificar las configuraciones de sesin predeterminadas, crear
configuraciones de sesin y cambiar los descriptores de seguridad
de todas las configuraciones de sesin.
Cuando se usan los cmdlets Invoke-Command, New-PSSession o
Enter-PSSession, se puede utilizar el parmetro ConfigurationName
para indicar la configuracin de sesin que se usa para la
sesin. Adems, se puede cambiar la configuracin predeterminada
utilizada por las sesiones modificando el valor de la variable de
preferencia $PSSessionConfigurationName en la sesin.
Para obtener ms informacin sobre las configuraciones de sesin,
vea la Ayuda referente a los cmdlets de configuracin de sesin.
Para obtener los cmdlets de configuracin de sesin, escriba:
get-command *pssessionconfiguration

EN QU CONSISTEN LAS CONFIGURACIONES DENOMINADAS FAN-IN Y FAN-OUT?


El escenario ms comn de la comunicacin remota de Windows
PowerShell con varios equipos es la configuracin uno a varios,
donde un solo equipo local (equipo del administrador) ejecuta
comandos de Windows PowerShell en varios equipos remotos. Este
escenario se conoce como "fan-out".
Sin embargo, en algunas empresas, la configuracin utilizada es la
de varios a uno, donde varios equipos cliente se conectan a un
solo equipo remoto en el que se ejecuta Windows PowerShell, como
un servidor de archivos o un quiosco multimedia.
Esta configuracin se conoce como "fan-in".
La comunicacin remota de Windows PowerShell admite tanto la
configuracin fan-out como la configuracin fan-in.
Para la configuracin fan-out, Windows PowerShell utiliza el
protocolo Web Services for Management (WS-Management) y el
servicio WinRM que admite la implementacin de Microsoft de
WS-Management. Cuando un equipo local se conecta a un equipo
remoto, WS-Management establece una conexin y utiliza un
complemento de Windows PowerShell para iniciar el proceso de host
de Windows PowerShell (Wsmprovhost.exe) en el equipo remoto. El
usuario puede especificar un puerto alternativo, una configuracin
de sesin alternativa y otras caractersticas para personalizar la
conexin remota.
Para admitir la configuracin fan-in, Windows PowerShell utiliza
Internet Information Services (IIS) para hospedar WS-Management,
cargar el complemento de Windows PowerShell e iniciar Windows
PowerShell. En este escenario, en lugar de iniciar cada sesin de
Windows PowerShell en un proceso independiente, todas las sesiones
de Windows PowerShell se ejecutan en el mismo proceso de host.

Windows XP y Windows Server 2003 no admiten el hospedaje a travs


de IIS ni la administracin remota del tipo fan-in.
En la configuracin fan-in, el usuario puede especificar un
identificador URI de conexin y un extremo HTTP, incluidos el
transporte, el nombre de equipo, el puerto y el nombre de
aplicacin. IIS enva a la aplicacin todas las solicitudes con el
nombre de aplicacin especificado. De forma predeterminada, es
WS-Management, que puede hospedar Windows PowerShell.
Tambin se puede especificar un mecanismo de autenticacin y
prohibir o permitir la redireccin desde extremos HTTP y HTTPS.
SE PUEDE PROBAR LA COMUNICACIN REMOTA EN UN SOLO EQUIPO (QUE NO
EST EN UN DOMINIO)?
S. La comunicacin remota de Windows PowerShell est disponible
incluso si el equipo local no est en un dominio. Se pueden usar
las caractersticas de comunicacin remota para conectarse a
sesiones y crear sesiones en el mismo equipo. Las caractersticas
funcionan de la misma manera que cuando se establece una conexin
con un equipo remoto.
Para ejecutar comandos remotos en un equipo de un grupo de
trabajo, cambie las siguientes configuraciones de Windows en
dicho equipo.
Precaucin: estas configuraciones afectan a todos los usuarios
del sistema y pueden dar lugar a que el sistema sea ms
vulnerable a ataques malintencionados. Acte con precaucin a la
hora de realizar estos cambios.
-- Windows XP con SP2:
Utilice la configuracin de seguridad local (Secpol.msc) para
cambiar a "Clsico" la configuracin de la directiva "Acceso
a redes: modelo de seguridad y uso compartido para cuentas
locales" en Configuracin de seguridad\Directivas
locales\Opciones de seguridad.
-- Windows Vista:
Cree la siguiente entrada en el Registro y, a continuacin,
establezca su valor en 1:
LocalAccountTokenFilterPolicy en
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Puede utilizar el siguiente comando de Windows PowerShell
para agregar esta entrada:
new-itemproperty `
-path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-name LocalAccountTokenFilterPolicy -propertyType DWord -value 1
-- Windows 2003:

No es preciso realizar ningn cambio porque la configuracin


predeterminada de la directiva "Acceso a redes: modelo de
seguridad y uso compartido para cuentas locales" es
"Clsico". Compruebe la configuracin por si ha cambiado.
SE PUEDEN EJECUTAR COMANDOS REMOTOS EN UN EQUIPO DE OTRO DOMINIO?
S. Normalmente, los comandos se ejecutan correctamente, aunque
es posible que haya que usar el parmetro Credential de los
cmdlets Invoke-Command, New-PSSession o Enter-PSSession para
proporcionar las credenciales de un miembro del grupo
Administradores en el equipo remoto. En algunas ocasiones se
requieren dichas credenciales incluso si el usuario actual es
miembro del grupo Administradores en el equipo local y en el
equipo remoto.
No obstante, si el equipo remoto est en un dominio en el que no
confe el equipo local, es posible que no pueda autenticar las
credenciales del usuario.
Para habilitar la autenticacin, utilice el comando siguiente a
fin de agregar el equipo remoto a la lista de hosts de confianza
del equipo local en WinRM.
Escriba el comando en el smbolo del sistema de Windows PowerShell.
set-item WSMan:\localhost\Client\TrustedHosts -value <nombre del equipo
remoto>
Por ejemplo, para agregar el equipo Servidor01 a la lista de
hosts de confianza en el equipo local, escriba el comando
siguiente en el smbolo del sistema de Windows PowerShell:
set-item WSMan:\localhost\Client\TrustedHosts -value Servidor01
VEA TAMBIN
about_Remote
about_Profiles
about_PSSessions
about_Remote_Jobs
Invoke-Command
New-PSSession

También podría gustarte