Acerca de las Preguntas más frecuentes sobre el acceso remotoAbout Remote FAQ

Descripción breveShort description

Contiene preguntas y respuestas sobre la ejecución de comandos remotos en PowerShell.Contains questions and answers about running remote commands in PowerShell.

Descripción largaLong description

Cuando se trabaja de forma remota, se escriben comandos en PowerShell en un equipo (conocido como "equipo local"), pero los comandos se ejecutan en otro equipo (conocido como "equipo remoto").When you work remotely, you type commands in PowerShell on one computer (known as the "local computer"), but the commands run on another computer (known as the "remote computer"). La experiencia de trabajar de forma remota debe ser tan similar a trabajar directamente en el equipo remoto como sea posible.The experience of working remotely should be as much like working directly at the remote computer as possible.

Nota: para usar la comunicación remota de PowerShell, el equipo remoto debe estar configurado para la comunicación remota.Note: To use PowerShell remoting, the remote computer must be configured for remoting. Para obtener más información, consulte about_Remote_Requirements.For more information, see about_Remote_Requirements.

¿Deben tener PowerShell instalados ambos equipos?Must both computers have PowerShell installed?

Sí.Yes. Para trabajar de forma remota, los equipos locales y remotos deben tener PowerShell, el marco de Microsoft .NET y el protocolo servicios web para administración (WS-Management).To work remotely, the local and remote computers must have PowerShell, the Microsoft .NET Framework, and the Web Services for Management (WS-Management) protocol. Los archivos y otros recursos necesarios para ejecutar un comando determinado deben estar en el equipo remoto.Any files and other resources that are needed to execute a particular command must be on the remote computer.

Los equipos que ejecutan Windows PowerShell 3,0 y equipos que ejecutan Windows PowerShell 2,0 pueden conectarse entre sí de forma remota y ejecutar comandos remotos.Computers running Windows PowerShell 3.0 and computers running Windows PowerShell 2.0 can connect to each other remotely and run remote commands. Sin embargo, algunas características, como la posibilidad de desconectarse de una sesión y volver a conectarse a ella, solo funcionan cuando ambos equipos ejecutan Windows PowerShell 3,0.However, some features, such as the ability to disconnect from a session and reconnect to it, work only when both computers are running Windows PowerShell 3.0.

Debe tener permiso para conectarse al equipo remoto, el permiso para ejecutar PowerShell y el permiso para tener acceso a los almacenes de datos (por ejemplo, archivos y carpetas) y al registro en el equipo remoto.You must have permission to connect to the remote computer, permission to run PowerShell, and permission to access data stores (such as files and folders), and the registry on the remote computer.

Para obtener más información, consulte about_Remote_Requirements.For more information, see about_Remote_Requirements.

¿Cómo funciona la comunicación remota?How does remoting work?

Cuando se envía un comando remoto, el comando se transmite a través de la red al motor de PowerShell en el equipo remoto y se ejecuta en el cliente de PowerShell en el equipo remoto.When you submit a remote command, the command is transmitted across the network to the PowerShell engine on the remote computer, and it runs in the PowerShell client on the remote computer. Los resultados del comando se devuelven al equipo local y aparecen en la sesión de PowerShell en el equipo local.The command results are sent back to the local computer and appear in the PowerShell session on the local computer.

Para transmitir los comandos y recibir la salida, PowerShell usa el protocolo WS-Management.To transmit the commands and receive the output, PowerShell uses the WS-Management protocol. Para obtener información sobre el protocolo de WS-Management, vea protocolo WS-Management en la documentación de Windows.For information about the WS-Management protocol, see WS-Management Protocol in the Windows documentation.

A partir de Windows PowerShell 3,0, las sesiones remotas se almacenan en el equipo remoto.Beginning in Windows PowerShell 3.0, remote sessions are stored on the remote computer. Esto le permite desconectarse de la sesión y volver a conectarse desde una sesión diferente o desde otro equipo sin interrumpir los comandos o perder el estado.This enables you to disconnect from the session and reconnect from a different session or a different computer without interrupting the commands or losing state.

¿Es segura la comunicación remota de PowerShell?Is PowerShell remoting secure?

Cuando se conecta a un equipo remoto, el sistema usa las credenciales de nombre de usuario y contraseña en el equipo local o las credenciales que se proporcionan en el comando para iniciar sesión en el equipo remoto.When you connect to a remote computer, the system uses the username and password credentials on the local computer or the credentials that you supply in the command to log you in to the remote computer. Las credenciales y el resto de la transmisión se cifran.The credentials and the rest of the transmission are encrypted.

Para agregar protección adicional, puede configurar el equipo remoto para que use Capa de sockets seguros (SSL) en lugar de HTTP para escuchar solicitudes de Administración remota de Windows (WinRM).To add additional protection, you can configure the remote computer to use Secure Sockets Layer (SSL) instead of HTTP to listen for Windows Remote Management (WinRM) requests. A continuación, los usuarios pueden usar el parámetro UseSSL de los Invoke-Command New-PSSession Enter-PSSession cmdlets, y al establecer una conexión.Then, users can use the UseSSL parameter of the Invoke-Command, New-PSSession, and Enter-PSSession cmdlets when establishing a connection. Esta opción utiliza el canal HTTPS más seguro en lugar de HTTP.This option uses the more secure HTTPS channel instead of HTTP.

¿Todos los comandos remotos requieren la comunicación remota de PowerShell?Do all remote commands require PowerShell remoting?

No.No. Varios cmdlets tienen un parámetro ComputerName que le permite obtener objetos del equipo remoto.Several cmdlets have a ComputerName parameter that lets you get objects from the remote computer.

Estos cmdlets no usan la comunicación remota de PowerShell.These cmdlets do not use PowerShell remoting. Por lo tanto, puede usarlos en cualquier equipo que ejecute PowerShell, incluso si el equipo no está configurado para la comunicación remota de PowerShell o si el equipo no cumple los requisitos de la comunicación remota de PowerShell.So, you can use them on any computer that is running PowerShell, even if the computer is not configured for PowerShell remoting or if the computer does not meet the requirements for PowerShell remoting.

Estos cmdlets son los siguientes:These cmdlets include the following:

  • Get-Process
  • Get-Service
  • Get-WinEvent
  • Get-EventLog
  • Test-Connection

Para buscar todos los cmdlets con un parámetro ComputerName , escriba:To find all the cmdlets with a ComputerName parameter, type:

Get-Help * -Parameter ComputerName
# or
Get-Command -ParameterName ComputerName

Para determinar si el parámetro ComputerName de un cmdlet determinado requiere la comunicación remota de PowerShell, vea la descripción del parámetro.To determine whether the ComputerName parameter of a particular cmdlet requires PowerShell remoting, see the parameter description. Para mostrar la descripción del parámetro, escriba:To display the parameter description, type:

Get-Help <cmdlet-name> -Parameter ComputerName

Por ejemplo:For example:

Get-Help Get-Process -Parameter ComputerName

Para el resto de comandos, use el Invoke-Command cmdlet.For all other commands, use the Invoke-Command cmdlet.

Cómo ejecutar un comando en un equipo remotoHow do I run a command on a remote computer?

Para ejecutar un comando en un equipo remoto, use el Invoke-Command cmdlet.To run a command on a remote computer, use the Invoke-Command cmdlet.

Escriba el comando entre llaves ( {} ) para convertirlo en un bloque de script.Enclose your command in braces ({}) to make it a script block. Use el parámetro ScriptBlock de Invoke-Command para especificar el comando.Use the ScriptBlock parameter of Invoke-Command to specify the command.

Puede usar el parámetro ComputerName de Invoke-Command para especificar un equipo remoto.You can use the ComputerName parameter of Invoke-Command to specify a remote computer. O bien, puede crear una conexión persistente a un equipo remoto (una sesión) y, a continuación, usar el parámetro Session de Invoke-Command para ejecutar el comando en la sesión.Or, you can create a persistent connection to a remote computer (a session) and then use the Session parameter of Invoke-Command to run the command in the session.

Por ejemplo, los siguientes comandos ejecutan un Get-Process comando de forma remota.For example, the following commands run a Get-Process command remotely.

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-Process}

#  - OR -

Invoke-Command -Session $s -ScriptBlock {Get-Process}

Para interrumpir un comando remoto, escriba Ctrl + C.To interrupt a remote command, type CTRL+C. La solicitud de interrupción se pasa al equipo remoto, donde finaliza el comando remoto.The interruption request is passed to the remote computer, where it terminates the remote command.

Para obtener más información acerca de los comandos remotos, vea about_Remote y los temas de ayuda de los cmdlets que admiten la comunicación remota.For more information about remote commands, see about_Remote and the Help topics for the cmdlets that support remoting.

¿Puedo simplemente Telnet en un equipo remoto?Can I just telnet into a remote computer?

Puede usar el Enter-PSSession cmdlet para iniciar una sesión interactiva con un equipo remoto.You can use the Enter-PSSession cmdlet to start an interactive session with a remote computer.

En el símbolo del sistema de PowerShell, escriba:At the PowerShell prompt, type:

Enter-PSSession <ComputerName>

El símbolo del sistema cambia para mostrar que está conectado al equipo remoto.The command prompt changes to show that you are connected to the remote computer.

<ComputerName>\C:>

Ahora, los comandos que escriba se ejecutan en el equipo remoto, como si los hubiera escrito directamente en el equipo remoto.Now, the commands that you type run on the remote computer just as though you typed them directly on the remote computer.

Para finalizar la sesión interactiva, escriba:To end the interactive session, type:

Exit-PSSession

Una sesión interactiva es una sesión persistente que usa el protocolo WS-Management.An interactive session is a persistent session that uses the WS-Management protocol. No es lo mismo que usar Telnet, pero proporciona una experiencia similar.It is not the same as using Telnet, but it provides a similar experience.

Para obtener más información, vea Enter-PSSession.For more information, see Enter-PSSession.

¿Se puede crear una conexión persistente?Can I create a persistent connection?

Sí.Yes. Puede ejecutar comandos remotos especificando el nombre del equipo remoto, su nombre NetBIOS o su dirección IP.You can run remote commands by specifying the name of the remote computer, its NetBIOS name, or its IP address. O bien, puede ejecutar comandos remotos especificando una sesión de PowerShell (PSSession) que esté conectada al equipo remoto.Or, you can run remote commands by specifying a PowerShell session (PSSession) that is connected to the remote computer.

Cuando se usa el parámetro ComputerName de Invoke-Command o Enter-PSSession , PowerShell establece una conexión temporal.When you use the ComputerName parameter of Invoke-Command or Enter-PSSession, PowerShell establishes a temporary connection. PowerShell usa la conexión para ejecutar solo el comando actual y, a continuación, cierra la conexión.PowerShell uses the connection to run only the current command, and then it closes the connection. Se trata de un método muy eficaz para ejecutar un solo comando o varios comandos no relacionados, incluso en muchos equipos remotos.This is a very efficient method for running a single command or several unrelated commands, even on many remote computers.

Cuando se usa el New-PSSession cmdlet para crear una pssession, PowerShell establece una conexión persistente para la pssession.When you use the New-PSSession cmdlet to create a PSSession, PowerShell establishes a persistent connection for the PSSession. A continuación, puede ejecutar varios comandos en la PSSession, incluidos los comandos que comparten datos.Then, you can run multiple commands in the PSSession, including commands that share data.

Normalmente, se crea una PSSession para ejecutar una serie de comandos relacionados que comparten datos.Typically, you create a PSSession to run a series of related commands that share data. De lo contrario, la conexión temporal creada por el parámetro ComputerName es suficiente para la mayoría de los comandos.Otherwise, the temporary connection created by the ComputerName parameter is sufficient for most commands.

Para obtener más información acerca de las sesiones, vea about_PSSessions.For more information about sessions, see about_PSSessions.

¿Puedo ejecutar comandos en más de un equipo a la vez?Can I run commands on more than one computer at a time?

Sí.Yes. El parámetro ComputerName del Invoke-Command cmdlet acepta varios nombres de equipo y el parámetro Session acepta varios PSSessions.The ComputerName parameter of the Invoke-Command cmdlet accepts multiple computer names, and the Session parameter accepts multiple PSSessions.

Al ejecutar un Invoke-Command comando, PowerShell ejecuta los comandos en todos los equipos especificados o en todos los PSSessions especificados.When you run an Invoke-Command command, PowerShell runs the commands on all of the specified computers or in all of the specified PSSessions.

PowerShell puede administrar cientos de conexiones remotas simultáneas.PowerShell can manage hundreds of concurrent remote connections. Sin embargo, el número de comandos remotos que puede enviar puede estar limitado por los recursos del equipo y su capacidad para establecer y mantener varias conexiones de red.However, the number of remote commands that you can send might be limited by the resources of your computer and its capacity to establish and maintain multiple network connections.

Para obtener más información, vea el ejemplo del Invoke-Command tema de ayuda.For more information, see the example in the Invoke-Command Help topic.

¿Dónde están mis perfiles?Where are my profiles?

Los perfiles de PowerShell no se ejecutan automáticamente en las sesiones remotas, por lo que los comandos que agrega el perfil no están presentes en la sesión.PowerShell profiles are not run automatically in remote sessions, so the commands that the profile adds are not present in the session. Además, la $profile variable automática no se rellena en las sesiones remotas.In addition, the $profile automatic variable is not populated in remote sessions.

Para ejecutar un perfil en una sesión, use el Invoke-Command cmdlet.To run a profile in a session, use the Invoke-Command cmdlet.

Por ejemplo, el siguiente comando ejecuta el perfil CurrentUserCurrentHost desde el equipo local en la sesión de $s .For example, the following command runs the CurrentUserCurrentHost profile from the local computer in the session in $s.

Invoke-Command -Session $s -FilePath $profile

El siguiente comando ejecuta el perfil CurrentUserCurrentHost desde el equipo remoto en la sesión de $s .The following command runs the CurrentUserCurrentHost profile from the remote computer in the session in $s. Dado $profile que la variable no se rellena, el comando usa la ruta de acceso explícita al perfil.Because the $profile variable is not populated, the command uses the explicit path to the profile.

Invoke-Command -Session $s {
  . "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Después de ejecutar este comando, los comandos que el perfil agrega a la sesión están disponibles en $s .After running this command, the commands that the profile adds to the session are available in $s.

También puede usar un script de inicio en una configuración de sesión para ejecutar un perfil en cada sesión remota que use la configuración de sesión.You can also use a startup script in a session configuration to run a profile in every remote session that uses the session configuration.

Para obtener más información sobre los perfiles de PowerShell, consulte about_Profiles.For more information about PowerShell profiles, see about_Profiles. Para obtener más información acerca de las configuraciones de sesión, vea Register-PSSessionConfiguration .For more information about session configurations, see Register-PSSessionConfiguration.

¿Cómo funciona la limitación en comandos remotos?How does throttling work on remote commands?

Para ayudarle a administrar los recursos en el equipo local, PowerShell incluye una característica de limitación por comandos que le permite limitar el número de conexiones remotas simultáneas que se establecen para cada comando.To help you manage the resources on your local computer, PowerShell includes a per-command throttling feature that lets you limit the number of concurrent remote connections that are established for each command.

El valor predeterminado es 32 conexiones simultáneas, pero puede usar el parámetro ThrottleLimit de los cmdlets para establecer un límite de limitación personalizado para determinados comandos.The default is 32 concurrent connections, but you can use the ThrottleLimit parameter of the cmdlets to set a custom throttle limit for particular commands.

Cuando use la característica de limitación, recuerde que se aplica a cada comando, no a la sesión completa o al equipo.When you use the throttling feature, remember that it is applied to each command, not to the entire session or to the computer. Si ejecuta comandos simultáneamente en varias sesiones o PSSessions, el número de conexiones simultáneas es la suma de las conexiones simultáneas en todas las sesiones.If you are running commands concurrently in several sessions or PSSessions, the number of concurrent connections is the sum of the concurrent connections in all the sessions.

Para buscar cmdlets con un parámetro ThrottleLimit , escriba:To find cmdlets with a ThrottleLimit parameter, type:

Get-Help * -Parameter ThrottleLimit
-or-
Get-Command -ParameterName ThrottleLimit

¿La salida de los comandos remotos es diferente de la salida local?Is the output of remote commands different from local output?

Cuando se usa PowerShell localmente, se envían y reciben objetos de .NET Framework "activos"; los objetos "activos" son objetos que están asociados a programas o componentes del sistema reales.When you use PowerShell locally, you send and receive "live" .NET Framework objects; "live" objects are objects that are associated with actual programs or system components. Al invocar los métodos o cambiar las propiedades de los objetos activos, los cambios afectan al programa o componente real.When you invoke the methods or change the properties of live objects, the changes affect the actual program or component. Y, cuando cambian las propiedades de un programa o componente, también cambian las propiedades del objeto que los representan.And, when the properties of a program or component change, the properties of the object that represent them also change.

Sin embargo, dado que la mayoría de los objetos activos no se pueden transmitir a través de la red, PowerShell "serializa" la mayoría de los objetos enviados en comandos remotos, es decir, convierte cada objeto en una serie de elementos de datos XML (lenguaje de restricción en XML [CLiXML]) para su transmisión.However, because most live objects cannot be transmitted over the network, PowerShell "serializes" most of the objects sent in remote commands, that is, it converts each object into a series of XML (Constraint Language in XML [CLiXML]) data elements for transmission.

Cuando PowerShell recibe un objeto serializado, convierte el XML en un tipo de objeto deserializado.When PowerShell receives a serialized object, it converts the XML into a deserialized object type. 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á directamente asociado al componente.The deserialized object is an accurate record of the properties of the program or component at a previous time, but it is no longer "live", that is, it is no longer directly associated with the component. Y los métodos se quitan porque ya no son efectivos.And, the methods are removed because they are no longer effective.

Normalmente, puede usar objetos deserializados del mismo modo que usaría objetos activos, pero debe tener en cuenta sus limitaciones.Typically, you can use deserialized objects just as you would use live objects, but you must be aware of their limitations. Además, los objetos devueltos por el Invoke-Command cmdlet tienen propiedades adicionales que le ayudan a determinar el origen del comando.Also, the objects that are returned by the Invoke-Command cmdlet have additional properties that help you to determine the origin of the command.

Algunos tipos de objetos, como los objetos DirectoryInfo y los GUID, se convierten de nuevo en objetos activos cuando se reciben.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Estos objetos no necesitan ningún control o formato especial.These objects do not need any special handling or formatting.

Para obtener información sobre cómo interpretar y dar formato a la salida remota, vea about_Remote_Output.For information about interpreting and formatting remote output, see about_Remote_Output.

¿Puedo ejecutar trabajos en segundo plano de forma remota?Can I run background jobs remotely?

Sí.Yes. Un trabajo en segundo plano de PowerShell es un comando de PowerShell que se ejecuta de forma asincrónica sin interactuar con la sesión.A PowerShell background job is a PowerShell command that runs asynchronously without interacting with the session. Cuando se inicia un trabajo en segundo plano, el símbolo del sistema vuelve inmediatamente y puede continuar trabajando en la sesión mientras se ejecuta el trabajo, incluso si se ejecuta durante un período de tiempo prolongado.When you start a background job, the command prompt returns immediately, and you can continue to work in the session while the job runs even if it runs for an extended period of time.

Puede iniciar un trabajo en segundo plano incluso mientras se ejecutan otros comandos, ya que los trabajos en segundo plano siempre se ejecutan de forma asincrónica en una sesión temporal.You can start a background job even while other commands are running because background jobs always run asynchronously in a temporary session.

Puede ejecutar trabajos en segundo plano en un equipo local o remoto.You can run background jobs on a local or remote computer. De forma predeterminada, un trabajo en segundo plano se ejecuta en el equipo local.By default, a background job runs on the local computer. Sin embargo, puede usar el parámetro AsJob del Invoke-Command cmdlet para ejecutar cualquier comando remoto como un trabajo en segundo plano.However, you can use the AsJob parameter of the Invoke-Command cmdlet to run any remote command as a background job. Además, puede usar Invoke-Command para ejecutar un Start-Job comando de forma remota.And, you can use Invoke-Command to run a Start-Job command remotely.

Para obtener más información sobre los trabajos en segundo plano en PowerShell, vea [about_Jobs (about_Jobs. MD)] y [about_Remote_Jobs (about_Remote_Jobs. MD)].For more information about background jobs in PowerShell , see [about_Jobs(about_Jobs.md)] and [about_Remote_Jobs(about_Remote_Jobs.md)].

¿Puedo ejecutar programas de Windows en un equipo remoto?Can I run windows programs on a remote computer?

Puede usar comandos remotos de PowerShell para ejecutar programas basados en Windows en equipos remotos.You can use PowerShell remote commands to run Windows-based programs on remote computers. Por ejemplo, puede ejecutar Shutdown.exe o Ipconfig.exe en un equipo remoto.For example, you can run Shutdown.exe or Ipconfig.exe on a remote computer.

Sin embargo, no puede usar comandos de PowerShell para abrir la interfaz de usuario de ningún programa en un equipo remoto.However, you cannot use PowerShell commands to open the user interface for any program on a remote computer.

Cuando se inicia un programa de Windows en un equipo remoto, el comando no se completa y el símbolo del sistema de PowerShell no vuelve hasta que el programa finaliza o hasta que se presiona Ctrl + C para interrumpir el comando.When you start a Windows program on a remote computer, the command is not completed, and the PowerShell command prompt does not return, until the program is finished or until you press CTRL+C to interrupt the command. Por ejemplo, si ejecuta el Ipconfig.exe programa en un equipo remoto, el símbolo del sistema no volverá hasta que Ipconfig.exe se complete.For example, if you run the Ipconfig.exe program on a remote computer, the command prompt does not return until Ipconfig.exe is completed.

Si usa comandos remotos para iniciar un programa que tiene una interfaz de usuario, se inicia el proceso del programa, pero la interfaz de usuario no aparece.If you use remote commands to start a program that has a user interface, the program process starts, but the user interface does not appear. El comando de PowerShell no se completa y el símbolo del sistema no vuelve hasta que se detiene el proceso del programa o hasta que se presiona Ctrl + C, que interrumpe el comando y detiene el proceso.The PowerShell command is not completed, and the command prompt does not return until you stop the program process or until you press CTRL+C, which interrupts the command and stops the process.

Por ejemplo, si usa un comando de PowerShell para ejecutarse Notepad en un equipo remoto, el proceso de Bloc de notas se inicia en el equipo remoto, pero la interfaz de usuario del Bloc de notas no aparece.For example, if you use a PowerShell command to run Notepad on a remote computer, the Notepad process starts on the remote computer, but the Notepad user interface does not appear. Para interrumpir el comando y restaurar el símbolo del sistema, presione Ctrl + C.To interrupt the command and restore the command prompt, press CTRL+C.

¿Se pueden limitar los comandos que los usuarios pueden ejecutar de forma remota en el equipo?Can I limit the commands that users can run remotely on my computer?

Sí.Yes. Cada sesión remota debe utilizar una de las configuraciones de sesión en el equipo remoto.Every remote session must use one of the session configurations on the remote computer. Puede administrar las configuraciones de sesión en el equipo (y los permisos de esas configuraciones de sesión) para determinar quién puede ejecutar comandos de forma remota en el equipo y qué comandos se pueden ejecutar.You can manage the session configurations on your computer (and the permissions to those session configurations) to determine who can run commands remotely on your computer and which commands they can run.

Una configuración de sesión configura el entorno para la sesión.A session configuration configures the environment for the session. Puede definir la configuración mediante el uso de un ensamblado que implementa una nueva clase de configuración o mediante un script que se ejecuta en la sesión.You can define the configuration by using an assembly that implements a new configuration class or by using a script that runs in the session. La configuración puede determinar los comandos que están disponibles en la sesión.The configuration can determine the commands that are available in the session. Además, la configuración puede incluir la configuración que protege el equipo, como la configuración que limita la cantidad de datos que la sesión puede recibir de forma remota en un solo objeto o comando.And, the configuration can include settings that protect the computer, such as settings that limit the amount of data that the session can receive remotely in a single object or command. También puede especificar un descriptor de seguridad que determine los permisos necesarios para usar la configuración.You can also specify a security descriptor that determines the permissions that are required to use the configuration.

El Enable-PSRemoting cmdlet crea las configuraciones de sesión predeterminadas en el equipo: Microsoft. PowerShell, Microsoft. PowerShell. Workflow y Microsoft. PowerShell32 (solo en sistemas operativos de 64 bits).The Enable-PSRemoting cmdlet creates the default session configurations on your computer: Microsoft.PowerShell, Microsoft.PowerShell.Workflow, and Microsoft.PowerShell32 (64-bit operating systems only). Enable-PSRemoting establece el descriptor de seguridad de la configuración para permitir que solo los usuarios del grupo administradores del equipo puedan usarlas.Enable-PSRemoting sets the security descriptor for the configuration to allow only members of the Administrators group on your computer to use them.

Puede usar los cmdlets de configuración de sesión para editar las configuraciones de sesión predeterminadas, crear nuevas configuraciones de sesión y cambiar los descriptores de seguridad de todas las configuraciones de sesión.You can use the session configuration cmdlets to edit the default session configurations, to create new session configurations, and to change the security descriptors of all the session configurations.

A partir de Windows PowerShell 3,0, el New-PSSessionConfigurationFile cmdlet le permite crear configuraciones de sesión personalizadas mediante un archivo de texto.Beginning in Windows PowerShell 3.0, the New-PSSessionConfigurationFile cmdlet lets you create custom session configurations by using a text file. El archivo incluye opciones para establecer el modo de lenguaje y para especificar los cmdlets y módulos que están disponibles en las sesiones que usan la configuración de sesión.The file includes options for setting the language mode and for specifying the cmdlets and modules that are available in sessions that use the session configuration.

Cuando los usuarios usan Invoke-Command los New-PSSession Enter-PSSession cmdlets, o, pueden usar el parámetro ConfigurationName para indicar la configuración de sesión que se usa para la sesión.When users use the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets, they can use the ConfigurationName parameter to indicate the session configuration that is used for the session. Además, pueden cambiar la configuración predeterminada que usan sus sesiones cambiando el valor de la variable de $PSSessionConfigurationName preferencia en la sesión.And, they can change the default configuration that their sessions use by changing the value of the $PSSessionConfigurationName preference variable in the session.

Para obtener más información sobre las configuraciones de sesión, vea la ayuda de los cmdlets de configuración de sesión.For more information about session configurations, see the Help for the session configuration cmdlets. Para buscar los cmdlets de configuración de sesión, escriba:To find the session configuration cmdlets, type:

Get-Command *PSSessionConfiguration

¿Qué son las configuraciones de fan in y fan out?What are fan in and fan out configurations?

El escenario de comunicación remota de PowerShell más común que implica varios equipos es la configuración de uno a varios, en la que un equipo local (el equipo del administrador) ejecuta comandos de PowerShell en numerosos equipos remotos.The most common PowerShell remoting scenario involving multiple computers is the one-to-many configuration, in which one local computer (the administrator's computer) runs PowerShell commands on numerous remote computers. Esto se conoce como escenario de "distribución ramificada".This is known as the "fan-out" scenario.

Sin embargo, en algunas empresas, la configuración es de varios a uno, donde muchos equipos cliente se conectan a un único equipo remoto que ejecuta PowerShell, como un servidor de archivos o un quiosco.However, in some enterprises, the configuration is many-to-one, where many client computers connect to a single remote computer that is running PowerShell, such as a file server or a kiosk. Esto se conoce como la configuración "fan-in".This is known as the "fan-in" configuration.

La comunicación remota de PowerShell admite configuraciones de distribución ramificada y de salida.PowerShell remoting supports both fan-out and fan-in configurations.

Para la configuración de distribución ramificada, PowerShell usa el protocolo servicios web para administración (WS-Management) y el servicio WinRM que admite la implementación de Microsoft de WS-Management.For the fan-out configuration, PowerShell uses the Web Services for Management (WS-Management) protocol and the WinRM service that supports the Microsoft implementation of WS-Management. Cuando un equipo local se conecta a un equipo remoto, WS-Management establece una conexión y usa un complemento de PowerShell para iniciar el proceso de host de PowerShell (Wsmprovhost.exe) en el equipo remoto.When a local computer connects to a remote computer, WS-Management establishes a connection and uses a plug-in for PowerShell to start the PowerShell host process (Wsmprovhost.exe) on the remote computer. El usuario puede especificar un puerto alternativo, una configuración de sesión alternativa y otras características para personalizar la conexión remota.The user can specify an alternate port, an alternate session configuration, and other features to customize the remote connection.

Para admitir la configuración "fan-in", PowerShell usa Internet Information Services (IIS) para hospedar WS-Management, para cargar el complemento de PowerShell y para iniciar PowerShell.To support the "fan-in" configuration, PowerShell uses internet Information Services (IIS) to host WS-Management, to load the PowerShell plug-in, and to start PowerShell. En este escenario, en lugar de iniciar cada sesión de PowerShell en un proceso independiente, todas las sesiones de PowerShell se ejecutan en el mismo proceso de host.In this scenario, instead of starting each PowerShell session in a separate process, all PowerShell sessions run in the same host process.

El hospedaje de IIS y la administración remota de fan-in no se admiten en Windows XP ni en Windows Server 2003.IIS hosting and fan-in remote management is not supported in Windows XP or in Windows Server 2003.

En una configuración de ventilador, el usuario puede especificar un URI de conexión y un extremo HTTP, incluidos el transporte, el nombre del equipo, el puerto y el nombre de la aplicación.In a fan-in configuration, the user can specify a connection URI and an HTTP endpoint, including the transport, computer name, port, and application name. IIS reenvía todas las solicitudes con un nombre de aplicación especificado a la aplicación.IIS forwards all the requests with a specified application name to the application. El valor predeterminado es WS-Management, que puede hospedar PowerShell.The default is WS-Management, which can host PowerShell.

También puede especificar un mecanismo de autenticación y prohibir o permitir el redireccionamiento desde puntos de conexión HTTP y HTTPS.You can also specify an authentication mechanism and prohibit or allow redirection from HTTP and HTTPS endpoints.

¿Puedo probar la comunicación remota en un solo equipo que no esté en un dominio?Can I test remoting on a single computer not in a domain?

Sí.Yes. La comunicación remota de PowerShell está disponible incluso cuando el equipo local no está en un dominio.PowerShell remoting is available even when the local computer is not in a domain. Puede usar las características de comunicación remota para conectarse a sesiones y crear sesiones en el mismo equipo.You can use the remoting features to connect to sessions and to create sessions on the same computer. Las características de funcionan de la misma forma que cuando se conecta a un equipo remoto.The features work the same as they do when you connect to a remote computer.

Para ejecutar comandos remotos en un equipo de un grupo de trabajo, cambie la siguiente configuración de Windows en el equipo.To run remote commands on a computer in a workgroup, change the following Windows settings on the computer.

PRECAUCIÓN: esta configuración afecta a todos los usuarios del sistema y puede hacer que el sistema sea más vulnerable a un ataque malintencionado.Caution: These settings affect all users on the system and they can make the system more vulnerable to a malicious attack. Tenga cuidado al realizar estos cambios.Use caution when making these changes.

  • Windows Vista, Windows 7, Windows 8:Windows Vista, Windows 7, Windows 8:

    Cree la siguiente entrada del registro y, a continuación, establezca su valor en 1: LocalAccountTokenFilterPolicy en HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\SystemCreate the following registry entry, and then set its value to 1: LocalAccountTokenFilterPolicy in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

    Puede usar el siguiente comando de PowerShell para agregar esta entrada:You can use the following PowerShell command to add this entry:

    $parameters = @{
      Path='HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
      Name='LocalAccountTokenFilterPolicy'
      propertyType='DWord'
      Value=1
    }
    New-ItemProperty @parameters
    
  • Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:

    No se necesitan cambios porque el valor predeterminado de la Directiva "acceso de red: modelo de seguridad y uso compartido para cuentas locales" es "clásico".No changes are needed because the default setting of the "Network Access: Sharing and security model for local accounts" policy is "Classic". Compruebe la configuración en caso de que haya cambiado.Verify the setting in case it has changed.

¿Puedo ejecutar comandos remotos en un equipo de otro dominio?Can I run remote commands on a computer in another domain?

Sí.Yes. Normalmente, los comandos se ejecutan sin errores, aunque es posible que tenga que usar el parámetro Credential de los Invoke-Command New-PSSession Enter-PSSession cmdlets, o para proporcionar las credenciales de un miembro del grupo administradores en el equipo remoto.Typically, the commands run without error, although you might need to use the Credential parameter of the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets to provide the credentials of a member of the Administrators group on the remote computer. En ocasiones, esto es necesario incluso cuando el usuario actual es miembro del grupo de administradores en los equipos locales y remotos.This is sometimes required even when the current user is a member of the Administrators group on the local and remote computers.

Sin embargo, si el equipo remoto no está en un dominio en el que confía el equipo local, es posible que el equipo remoto no pueda autenticar las credenciales del usuario.However, if the remote computer is not in a domain that the local computer trusts, the remote computer might not be able to authenticate the user's credentials.

Para habilitar la autenticación, use el siguiente comando para agregar el equipo remoto a la lista de hosts de confianza para el equipo local en WinRM.To enable authentication, use the following command to add the remote computer to the list of trusted hosts for the local computer in WinRM. Escriba el comando en el símbolo del sistema de PowerShell.Type the command at the PowerShell prompt.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <Remote-computer-name>

Por ejemplo, para agregar el equipo Server01 a la lista de hosts de confianza en el equipo local, escriba el siguiente comando en el símbolo del sistema de PowerShell:For example, to add the Server01 computer to the list of trusted hosts on the local computer, type the following command at the PowerShell prompt:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value Server01

¿PowerShell admite la comunicación remota a través de SSH?Does PowerShell support remoting over SSH?

Sí.Yes. Para obtener más información, consulte comunicación remota de PowerShell a través de ssh.For more information, see PowerShell remoting over SSH.

Consulte tambiénSee also

about_Remoteabout_Remote

about_Profilesabout_Profiles

about_PSSessionsabout_PSSessions

about_Remote_Jobsabout_Remote_Jobs

about_Remote_Variablesabout_Remote_Variables

Invoke-CommandInvoke-Command

New-PSSessionNew-PSSession