Acerca de la solución de problemas remotoAbout Remote Troubleshooting

Descripción breveShort description

Describe cómo solucionar problemas de las operaciones remotas en PowerShell.Describes how to troubleshoot remote operations in PowerShell.

Descripción largaLong description

En esta sección se describen algunos de los problemas que pueden surgir al usar las características de comunicación remota de PowerShell basadas en la tecnología de WS-Management y se sugieren soluciones a estos problemas.This section describes some of the problems that you might encounter when using the remoting features of PowerShell that are based on WS-Management technology and it suggests solutions to these problems.

Antes de usar la comunicación remota de PowerShell, consulte about_Remote y about_Remote_Requirements para obtener instrucciones sobre la configuración y el uso básico.Before using PowerShell remoting, see about_Remote and about_Remote_Requirements for guidance on configuration and basic use. Además, los temas de ayuda de cada uno de los cmdlets de comunicación remota, especialmente las descripciones de los parámetros, tienen información útil que está diseñada para ayudarle a evitar problemas.Also, the Help topics for each of the remoting cmdlets, particularly the parameter descriptions, have useful information that is designed to help you avoid problems.

Nota

Para ver o cambiar la configuración del equipo local en la unidad WSMan:, incluidos los cambios en las configuraciones de sesión, los hosts de confianza, los puertos o los agentes de escucha, inicie PowerShell con la opción Ejecutar como administrador .To view or change settings for the local computer in the WSMan: drive, including changes to the session configurations, trusted hosts, ports, or listeners, start PowerShell with the Run as administrator option.

Solucionar problemas de permisos y de autenticaciónTroubleshooting permission and authentication issues

En esta sección se describen los problemas de comunicación remota relacionados con los permisos de usuario y de equipo, así como los requisitos de comunicación remota.This section discusses remoting problems that are related to user and computer permissions and remoting requirements.

Ejecutar como administradorHow to run as administrator

ERROR: Access is denied. You need to run this cmdlet from an elevated
process.

Para iniciar una sesión remota en el equipo local, o para ver o cambiar la configuración del equipo local en la unidad WSMan:, incluidos los cambios en las configuraciones de sesión, los hosts de confianza, los puertos o los agentes de escucha, inicie Windows PowerShell con la opción Ejecutar como administrador .To start a remote session on the local computer, or to view or change settings for the local computer in the WSMan: drive, including changes to the session configurations, trusted hosts, ports, or listeners, start Windows PowerShell with the Run as administrator option.

Para iniciar Windows PowerShell con la opción Ejecutar como administrador :To start Windows PowerShell with the Run as administrator option:

  • Haga clic con el botón secundario en un icono de Windows PowerShell (o Windows PowerShell ISE) y, a continuación, haga clic en Ejecutar como administrador.Right-click a Windows PowerShell (or Windows PowerShell ISE) icon and then click Run as administrator.

    Para iniciar Windows PowerShell con la opción Ejecutar como administrador en Windows 7 y windows Server 2008 R2.To start Windows PowerShell with the Run as administrator option in Windows 7 and Windows Server 2008 R2.

  • En la barra de tareas de Windows, haga clic con el botón secundario en el icono de Windows PowerShell y luego haga clic en Ejecutar como administrador.In the Windows taskbar, right-click the Windows PowerShell icon, and then click Run as administrator.

    En Windows Server 2008 R2, el icono de Windows PowerShell está anclado a la barra de tareas de forma predeterminada.In Windows Server 2008 R2, the Windows PowerShell icon is pinned to the taskbar by default.

Cómo habilitar la comunicación remotaHow to enable remoting

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to
listen for requests on the correct port and HTTP URL.

No se requiere ninguna configuración para permitir que un equipo envíe comandos remotos.No configuration is required to enable a computer to send remote commands. Sin embargo, para recibir comandos remotos, la comunicación remota de PowerShell debe estar habilitada en el equipo.However, to receive remote commands, PowerShell remoting must be enabled on the computer. La habilitación de incluye el inicio del servicio WinRM, el establecimiento del tipo de inicio para el servicio WinRM en automático, la creación de agentes de escucha para las conexiones HTTP y HTTPS, y la creación de configuraciones de sesión predeterminadas.Enabling includes starting the WinRM service, setting the startup type for the WinRM service to Automatic, creating listeners for HTTP and HTTPS connections, and creating default session configurations.

La comunicación remota de Windows PowerShell está habilitada en Windows Server 2012 y en las versiones más recientes de Windows Server de forma predeterminada.Windows PowerShell remoting is enabled on Windows Server 2012 and newer releases of Windows Server by default. En todos los demás sistemas, ejecute el Enable-PSRemoting cmdlet para habilitar la comunicación remota.On all other systems, run the Enable-PSRemoting cmdlet to enable remoting. También puede ejecutar el Enable-PSRemoting cmdlet para volver a habilitar la comunicación remota en Windows server 2012 y versiones más recientes de Windows Server si la comunicación remota está deshabilitada.You can also run the Enable-PSRemoting cmdlet to re-enable remoting on Windows Server 2012 and newer releases of Windows Server if remoting is disabled.

Para configurar un equipo para recibir comandos remotos, use el Enable-PSRemoting cmdlet.To configure a computer to receive remote commands, use the Enable-PSRemoting cmdlet. El siguiente comando habilita todos los valores de configuración remotos necesarios, habilita las configuraciones de sesión y reinicia el servicio WinRM para que los cambios surtan efecto.The following command enables all required remote settings, enables the session configurations, and restarts the WinRM service to make the changes effective.

Enable-PSRemoting

Para suprimir todos los mensajes de usuario, escriba:To suppress all user prompts, type:

Enable-PSRemoting -Force

Para obtener más información, vea enable-PSRemoting.For more information, see Enable-PSRemoting.

Cómo habilitar la comunicación remota en una empresaHow to enable remoting in an enterprise

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Para habilitar un solo equipo para recibir comandos remotos de PowerShell y aceptar conexiones, use el Enable-PSRemoting cmdlet.To enable a single computer to receive remote PowerShell commands and accept connections, use the Enable-PSRemoting cmdlet.

Para habilitar la comunicación remota de varios equipos en una empresa, puede usar las siguientes opciones de escalado.To enable remoting for multiple computers in an enterprise, you can use the following scaled options.

  • Para configurar los agentes de escucha para la comunicación remota, habilite la directiva de grupo permitir configuración automática de agentes de escucha .To configure listeners for remoting, enable the Allow automatic configuration of listeners group policy.

  • Para establecer el tipo de inicio del Administración remota de Windows (WinRM) en automático en varios equipos, use el Set-Service cmdlet.To set the startup type of the Windows Remote Management (WinRM) to Automatic on multiple computers, use the Set-Service cmdlet.

  • Para habilitar una excepción de firewall, use la Directiva de grupo firewall de Windows: permitir excepciones de puerto local .To enable a firewall exception, use the Windows Firewall: Allow Local Port Exceptions group policy.

Habilitación de los agentes de escucha mediante una directiva de grupoHow to enable listeners by using a group policy

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Para configurar los agentes de escucha para todos los equipos de un dominio, habilite la directiva permitir configuración automática de escuchas en la siguiente directiva de grupo ruta de acceso:To configure the listeners for all computers in a domain, enable the Allow automatic configuration of listeners policy in the following Group Policy path:

Computer Configuration\Administrative Templates\Windows Components
    \Windows Remote Management (WinRM)\WinRM service

Habilite la Directiva y especifique los filtros IPv4 e IPv6.Enable the policy and specify the IPv4 and IPv6 filters. Se permiten caracteres comodín ( * ).Wildcards (*) are permitted.

Cómo habilitar la comunicación remota en redes públicasHow to enable remoting on public networks

ERROR:  Unable to check the status of the firewall

El Enable-PSRemoting cmdlet devuelve este error cuando la red local es pública y el parámetro SkipNetworkProfileCheck no se usa en el comando.The Enable-PSRemoting cmdlet returns this error when the local network is public and the SkipNetworkProfileCheck parameter is not used in the command.

En las versiones de servidor de Windows, se Enable-PSRemoting realiza correctamente en todos los tipos de ubicación de red.On server versions of Windows, Enable-PSRemoting succeeds on all network location types. Crea reglas de firewall que permiten el acceso remoto a redes privadas y de dominio ("Inicio" y "trabajo").It creates firewall rules that allow remote access to private and domain ("Home" and "Work") networks. En el caso de las redes públicas, crea reglas de firewall que permiten el acceso remoto desde la misma subred local.For public networks, it creates firewall rules that allows remote access from the same local subnet.

En las versiones de cliente de Windows, se Enable-PSRemoting realiza correctamente en redes privadas y de dominio.On client versions of Windows, Enable-PSRemoting succeeds on private and domain networks. De forma predeterminada, se produce un error en las redes públicas, pero si usa el parámetro SkipNetworkProfileCheck , se Enable-PSRemoting realiza correctamente y crea una regla de firewall que permite el tráfico de la misma subred local.By default, it fails on public networks, but if you use the SkipNetworkProfileCheck parameter, Enable-PSRemoting succeeds and creates a firewall rule that allows traffic from the same local subnet.

Para quitar la restricción de subred local en redes públicas y permitir el acceso remoto desde cualquier ubicación, ejecute el siguiente comando:To remove the local subnet restriction on public networks and allow remote access from any location, run the following command:

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

El Set-NetFirewallRule cmdlet lo exporta el módulo NetSecurity.The Set-NetFirewallRule cmdlet is exported by the NetSecurity module.

Nota

En Windows PowerShell 2,0, en equipos que ejecutan versiones de servidor de Windows, Enable-PSRemoting crea reglas de firewall que permiten el acceso remoto en redes privadas, de dominio y públicas.In Windows PowerShell 2.0, on computers running server versions of Windows, Enable-PSRemoting creates firewall rules that allow remote access on private, domain and public networks. En los equipos que ejecutan versiones de cliente de Windows, Enable-PSRemoting crea reglas de firewall que permiten el acceso remoto solo en redes privadas y de dominio.On computers running client versions of Windows, Enable-PSRemoting creates firewall rules that allow remote access only on private and domain networks.

Cómo habilitar una excepción de Firewall mediante una directiva de grupoHow to enable a firewall exception by using a group policy

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Para habilitar una excepción de Firewall para en todos los equipos de un dominio, habilite la directiva firewall de Windows: permitir excepciones de puerto local en la siguiente directiva de grupo ruta de acceso:To enable a firewall exception for in all computers in a domain, enable the Windows Firewall: Allow local port exceptions policy in the following Group Policy path:

Computer Configuration\Administrative Templates\Network
    \Network Connections\Windows Firewall\Domain Profile

Esta directiva permite a los miembros del grupo administradores del equipo usar Firewall de Windows en el Panel de control para crear una excepción de firewall para el servicio administración remota de Windows.This policy allows members of the Administrators group on the computer to use Windows Firewall in Control Panel to create a firewall exception for the Windows Remote Management service.

Si la configuración de la Directiva es incorrecta, es posible que reciba el siguiente error:If the policy configuration is incorrect you may receive the following error:

The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests.

Un error de configuración en la Directiva da como resultado un valor vacío para la propiedad ListenOn .A configuration error in the policy results in an empty value for the ListeningOn property. Use el siguiente comando para comprobar el valor.Use the following command to check the value.

PS> Get-WSManInstance winrm/config/listener -Enumerate

cfg                   : http://schemas.microsoft.com/wbem/wsman/1/config/listener
xsi                   : http://www.w3.org/2001/XMLSchema-instance
Source                : GPO
lang                  : en-US
Address               : *
Transport             : HTTP
Port                  : 5985
Hostname              :
Enabled               : true
URLPrefix             : wsman
CertificateThumbprint :
ListeningOn           : {}

Cómo establecer el tipo de inicio del servicio WinRMHow to set the startup type of the WinRM service

ERROR:  ACCESS IS DENIED

La comunicación remota de PowerShell depende del servicio Administración remota de Windows (WinRM).PowerShell remoting depends upon the Windows Remote Management (WinRM) service. El servicio debe estar en ejecución para admitir comandos remotos.The service must be running to support remote commands.

En las versiones de servidor de Windows, el tipo de inicio del servicio Administración remota de Windows (WinRM) es automático.On server versions of Windows, the startup type of the Windows Remote Management (WinRM) service is Automatic.

Sin embargo, en las versiones de cliente de Windows, el servicio WinRM está deshabilitado de forma predeterminada.However, on client versions of Windows, the WinRM service is disabled by default.

Para establecer el tipo de inicio de un servicio en un equipo remoto, use el Set-Service cmdlet.To set the startup type of a service on a remote computer, use the Set-Service cmdlet.

Para ejecutar el comando en varios equipos, puede crear un archivo de texto o un archivo CSV de los nombres de equipo.To run the command on multiple computers, you can create a text file or CSV file of the computer names.

Por ejemplo, los siguientes comandos obtienen una lista de nombres de equipo del Servers.txt archivo y, a continuación, establece el tipo de inicio del servicio WinRM en todos los equipos en automático.For example, the following commands get a list of computer names from the Servers.txt file and then sets the startup type of the WinRM service on all of the computers to Automatic.

$servers = Get-Content servers.txt
Set-Service WinRM -ComputerName $servers -startuptype Automatic

Para ver los resultados, use el Get-WMIObject cmdlet con el objeto Win32_Service .To see the results use the Get-WMIObject cmdlet with the Win32_Service object. Para obtener más información, consulte set-Service.For more information, see Set-Service.

Cómo volver a crear las configuraciones de sesión predeterminadasHow to recreate the default session configurations

ERROR:  ACCESS IS DENIED

Para conectarse al equipo local y ejecutar comandos de forma remota, el equipo local debe incluir configuraciones de sesión para comandos remotos.To connect to the local computer and run commands remotely, the local computer must include session configurations for remote commands.

Cuando se usa Enable-PSRemoting , crea configuraciones de sesión predeterminadas en el equipo local.When you use Enable-PSRemoting, it creates default session configurations on the local computer. Los usuarios remotos usan estas configuraciones de sesión cada vez que un comando remoto no incluye el parámetro ConfigurationName .Remote users use these session configurations whenever a remote command does not include the ConfigurationName parameter.

Si las configuraciones predeterminadas de un equipo no están registradas o eliminadas, use el Enable-PSRemoting cmdlet para volver a crearlas.If the default configurations on a computer are unregistered or deleted, use the Enable-PSRemoting cmdlet to recreate them. Puede usar este cmdlet varias veces.You can use this cmdlet repeatedly. No genera errores si ya hay una característica configurada.It does not generate errors if a feature is already configured.

Si cambia las configuraciones de sesión predeterminadas y desea restaurar las configuraciones de sesión predeterminadas originales, use el Unregister-PSSessionConfiguration cmdlet para eliminar las configuraciones de sesión modificadas y, a continuación, use el Enable-PSRemoting cmdlet para restaurarlas.If you change the default session configurations and want to restore the original default session configurations, use the Unregister-PSSessionConfiguration cmdlet to delete the changed session configurations and then use the Enable-PSRemoting cmdlet to restore them. Enable-PSRemoting no cambia las configuraciones de sesión existentes.Enable-PSRemoting does not change existing session configurations.

Nota

Cuando Enable-PSRemoting restaura la configuración de sesión predeterminada, no crea descriptores de seguridad explícitos para las configuraciones.When Enable-PSRemoting restores the default session configuration, it does not create explicit security descriptors for the configurations. En su lugar, las configuraciones heredan el descriptor de seguridad de RootSDDL, que es seguro de forma predeterminada.Instead, the configurations inherit the security descriptor of the RootSDDL, which is secure by default.

Para ver el descriptor de seguridad de RootSDDL, escriba:To see the RootSDDL security descriptor, type:

Get-Item wsman:\localhost\Service\RootSDDL

Para cambiar RootSDDL, use el Set-Item cmdlet en la unidad WSMan:.To change the RootSDDL, use the Set-Item cmdlet in the WSMan: drive. Para cambiar el descriptor de seguridad de una configuración de sesión, use el Set-PSSessionConfiguration cmdlet con los parámetros SecurityDescriptorSDDL o ShowSecurityDescriptorUI .To change the security descriptor of a session configuration, use the Set-PSSessionConfiguration cmdlet with the SecurityDescriptorSDDL or ShowSecurityDescriptorUI parameters.

Para obtener más información acerca de la unidad WSMan:, vea el tema de ayuda del proveedor WSMan ("Get-Help WSMan").For more information about the WSMan: drive, see the Help topic for the WSMan provider ("Get-Help wsman").

Cómo proporcionar credenciales de administradorHow to provide administrator credentials

ERROR:  ACCESS IS DENIED

Para crear una PSSession o ejecutar comandos en un equipo remoto, de forma predeterminada, el usuario actual debe ser miembro del grupo administradores en el equipo remoto.To create a PSSession or run commands on a remote computer, by default, the current user must be a member of the Administrators group on the remote computer. Las credenciales se requieren a veces incluso cuando el usuario actual ha iniciado sesión en una cuenta que es miembro del grupo administradores.Credentials are sometimes required even when the current user is logged on to an account that is a member of the Administrators group.

Si el usuario actual es miembro del grupo administradores en el equipo remoto, o puede proporcionar las credenciales de un miembro del grupo administradores, use el parámetro Credential de los New-PSSession Enter-PSSession Invoke-Command cmdlets o para conectarse de forma remota.If the current user is a member of the Administrators group on the remote computer, or can provide the credentials of a member of the Administrators group, use the Credential parameter of the New-PSSession, Enter-PSSession or Invoke-Command cmdlets to connect remotely.

Por ejemplo, el siguiente comando proporciona las credenciales de un administrador.For example, the following command provides the credentials of an Administrator.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Para obtener más información sobre el parámetro Credential , consulte New-PSSession, Enter-pssession o Invoke-Command.For more information about the Credential parameter, see New-PSSession, Enter-PSSession or Invoke-Command.

Cómo habilitar la comunicación remota para usuarios no administrativosHow to enable remoting for non-administrative users

ERROR:  ACCESS IS DENIED

Para establecer una PSSession o ejecutar un comando en un equipo remoto, el usuario debe tener permiso para usar las configuraciones de sesión en el equipo remoto.To establish a PSSession or run a command on a remote computer, the user must have permission to use the session configurations on the remote computer.

De forma predeterminada, solo los miembros del grupo administradores de un equipo tienen permiso para usar las configuraciones de sesión predeterminadas.By default, only members of the Administrators group on a computer have permission to use the default session configurations. Por lo tanto, solo los miembros del grupo administradores pueden conectarse al equipo de forma remota.Therefore, only members of the Administrators group can connect to the computer remotely.

Para permitir que otros usuarios se conecten al equipo local, conceda al usuario permisos de ejecución a las configuraciones de sesión predeterminadas en el equipo local.To allow other users to connect to the local computer, give the user Execute permissions to the default session configurations on the local computer.

El siguiente comando abre una hoja de propiedades que le permite cambiar el descriptor de seguridad de la configuración de sesión Microsoft. PowerShell predeterminada en el equipo local.The following command opens a property sheet that lets you change the security descriptor of the default Microsoft.PowerShell session configuration on the local computer.

Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

Para obtener más información, vea about_Session_Configurations.For more information, see about_Session_Configurations.

Cómo habilitar la comunicación remota para administradores en otros dominiosHow to enable remoting for administrators in other domains

ERROR:  ACCESS IS DENIED

Cuando un usuario de otro dominio es miembro del grupo administradores en el equipo local, el usuario no puede conectarse al equipo local de forma remota con privilegios de administrador.When a user in another domain is a member of the Administrators group on the local computer, the user cannot connect to the local computer remotely with Administrator privileges. De forma predeterminada, las conexiones remotas desde otros dominios se ejecutan solo con tokens de privilegios de usuario estándar.By default, remote connections from other domains run with only standard user privilege tokens.

Sin embargo, puede usar la entrada del registro LocalAccountTokenFilterPolicy para cambiar el comportamiento predeterminado y permitir que los usuarios remotos que son miembros del grupo administradores se ejecuten con privilegios de administrador.However, you can use the LocalAccountTokenFilterPolicy registry entry to change the default behavior and allow remote users who are members of the Administrators group to run with Administrator privileges.

Precaución

La entrada LocalAccountTokenFilterPolicy deshabilita las restricciones remotas de control de cuentas de usuario (UAC) para todos los usuarios de todos los equipos afectados.The LocalAccountTokenFilterPolicy entry disables user account control (UAC) remote restrictions for all users of all affected computers. Tenga cuidado con las implicaciones de esta configuración antes de cambiar la Directiva.Consider the implications of this setting carefully before changing the policy.

Para cambiar la Directiva, use el siguiente comando para establecer el valor de la entrada del registro LocalAccountTokenFilterPolicy en 1.To change the policy, use the following command to set the value of the LocalAccountTokenFilterPolicy registry entry to 1.

New-ItemProperty -Name LocalAccountTokenFilterPolicy `
  -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
  -PropertyType DWord -Value 1

Cómo usar una dirección IP en un comando remotoHow to use an ip address in a remote command

ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.

El parámetro ComputerName de los New-PSSession Enter-PSSession Invoke-Command cmdlets y acepta una dirección IP como un valor válido.The ComputerName parameter of the New-PSSession, Enter-PSSession and Invoke-Command cmdlets accepts an IP address as a valid value. Sin embargo, dado que la autenticación Kerberos no admite direcciones IP, la autenticación NTLM se utiliza de forma predeterminada siempre que se especifica una dirección IP.However, because Kerberos authentication does not support IP addresses, NTLM authentication is used by default whenever you specify an IP address.

Al utilizar la autenticación NTLM, se requiere el procedimiento siguiente para la comunicación remota.When using NTLM authentication, the following procedure is required for remoting.

  1. Configure el equipo para el transporte HTTPS o agregue las direcciones IP de los equipos remotos a la lista TrustedHosts en el equipo local.Configure the computer for HTTPS transport or add the IP addresses of the remote computers to the TrustedHosts list on the local computer.

  2. Use el parámetro Credential en todos los comandos remotos.Use the Credential parameter in all remote commands.

    Esto es necesario incluso cuando se envían las credenciales del usuario actual.This is required even when you are submitting the credentials of the current user.

Cómo conectarse de forma remota desde un equipo basado en grupo de trabajoHow to connect remotely from a workgroup-based computer

ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.

Cuando el equipo local no está en un dominio, se requiere el procedimiento siguiente para la comunicación remota.When the local computer is not in a domain, the following procedure is required for remoting.

  1. Configure el equipo para el transporte HTTPS o agregue los nombres de los equipos remotos a la lista TrustedHosts en el equipo local.Configure the computer for HTTPS transport or add the names of the remote computers to the TrustedHosts list on the local computer.

  2. Compruebe que se ha establecido una contraseña en el equipo basado en grupo de trabajo.Verify that a password is set on the workgroup-based computer. Si no se establece una contraseña o el valor de la contraseña está vacío, no se pueden ejecutar comandos remotos.If a password is not set or the password value is empty, you cannot run remote commands.

    Para establecer la contraseña de su cuenta de usuario, use cuentas de usuario en el panel de control.To set password for your user account, use User Accounts in Control Panel.

  3. Use el parámetro Credential en todos los comandos remotos.Use the Credential parameter in all remote commands.

    Esto es necesario incluso cuando se envían las credenciales del usuario actual.This is required even when you are submitting the credentials of the current user.

Cómo agregar un equipo a la lista de hosts de confianzaHow to add a computer to the trusted hosts list

El elemento TrustedHosts puede contener una lista separada por comas de nombres de equipo, direcciones IP y nombres de dominio completos.The TrustedHosts item can contain a comma-separated list of computer names, IP addresses, and fully-qualified domain names. Se permiten los caracteres comodín.Wildcards are permitted.

Para ver o cambiar la lista de hosts de confianza, utilice la unidad WSMan:.To view or change the trusted host list, use the WSMan: drive. El elemento TrustedHost se encuentra en el WSMan:\localhost\Client nodo.The TrustedHost item is in the WSMan:\localhost\Client node.

Solo los miembros del grupo administradores del equipo tienen permiso para cambiar la lista de hosts de confianza del equipo.Only members of the Administrators group on the computer have permission to change the list of trusted hosts on the computer.

PRECAUCIÓN: el valor que se establece para el elemento TrustedHosts afecta a todos los usuarios del equipo.Caution: The value that you set for the TrustedHosts item affects all users of the computer.

Para ver la lista de hosts de confianza, use el siguiente comando:To view the list of trusted hosts, use the following command:

Get-Item wsman:\localhost\Client\TrustedHosts

También puede usar el Set-Location cmdlet (alias = CD) para navegar a través de la unidad WSMan: a la ubicación.You can also use the Set-Location cmdlet (alias = cd) to navigate though the WSMan: drive to the location. Por ejemplo:For example:

cd WSMan:\localhost\Client; dir

Para agregar todos los equipos a la lista de hosts de confianza, use el siguiente comando, que coloca un valor de * (todos) en el equipoTo add all computers to the list of trusted hosts, use the following command, which places a value of * (all) in the ComputerName

Set-Item wsman:localhost\client\trustedhosts -Value *

También puede usar un carácter comodín ( * ) para agregar todos los equipos de un dominio determinado a la lista de hosts de confianza.You can also use a wildcard character (*) to add all computers in a particular domain to the list of trusted hosts. Por ejemplo, el comando siguiente agrega todos los equipos del dominio Fabrikam a la lista de hosts de confianza.For example, the following command adds all of the computers in the Fabrikam domain to the list of trusted hosts.

Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com

Para agregar los nombres de determinados equipos a la lista de hosts de confianza, utilice el siguiente formato de comando:To add the names of particular computers to the list of trusted hosts, use the following command format:

Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>

donde cada valor <ComputerName> debe tener el formato siguiente:where each value <ComputerName> must have the following format:

<Computer>.<Domain>.<Company>.<top-level-domain>

Por ejemplo:For example:

$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server

Para agregar un nombre de equipo a una lista existente de hosts de confianza, primero debe guardar el valor actual en una variable y, a continuación, establecer el valor en una lista separada por comas que incluya los valores actuales y nuevos.To add a computer name to an existing list of trusted hosts, first save the current value in a variable, and then set the value to a comma-separated list that includes the current and new values.

Por ejemplo, para agregar el equipo Server01 a una lista existente de hosts de confianza, utilice el comando siguiente.For example, to add the Server01 computer to an existing list of trusted hosts, use the following command

$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value

Set-Item wsman:\localhost\Client\TrustedHosts -Value `
  "$curValue, Server01.Domain01.Fabrikam.com"

Para agregar las direcciones IP de determinados equipos a la lista de hosts de confianza, utilice el siguiente formato de comando:To add the IP addresses of particular computers to the list of trusted hosts, use the following command format:

Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>

Por ejemplo:For example:

Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0

Para agregar un equipo a la lista TrustedHosts de un equipo remoto, use el Connect-WSMan cmdlet para agregar un nodo para el equipo remoto a la unidad WSMan: del equipo local.To add a computer to the TrustedHosts list of a remote computer, use the Connect-WSMan cmdlet to add a node for the remote computer to the WSMan: drive on the local computer. A continuación, use un Set-Item comando para agregar el equipo.Then use a Set-Item command to add the computer.

Para obtener más información sobre el Connect-WSMan cmdlet, consulte Connect-WSMan.For more information about the Connect-WSMan cmdlet, see Connect-WSMan.

Solución de problemas de configuración del equipoTroubleshooting computer configuration issues

En esta sección se describen los problemas de comunicación remota relacionados con las configuraciones específicas de un equipo, dominio o empresa.This section discusses remoting problems that are related to particular configurations of a computer, domain, or enterprise.

Cómo configurar la comunicación remota en puertos alternativosHow to configure remoting on alternate ports

ERROR: The connection to the specified remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

De forma predeterminada, la comunicación remota de PowerShell usa el puerto 80 para el transporte HTTP.PowerShell remoting uses port 80 for HTTP transport by default. El puerto predeterminado se usa siempre que el usuario no especifica los parámetros ConnectionURI o Port en un comando remoto.The default port is used whenever the user does not specify the ConnectionURI or Port parameters in a remote command.

Para cambiar el puerto predeterminado que usa PowerShell, use el Set-Item cmdlet en la unidad WSMan: para cambiar el valor del puerto en el nodo hoja del agente de escucha.To change the default port that PowerShell uses, use Set-Item cmdlet in the WSMan: drive to change the Port value in the listener leaf node.

Por ejemplo, el siguiente comando cambia el puerto predeterminado a 8080.For example, the following command changes the default port to 8080.

Set-Item wsman:\localhost\listener\listener*\port -Value 8080

Cómo configurar la comunicación remota con un servidor proxyHow to configure remoting with a proxy server

ERROR: The client cannot connect to the destination specified in the request.
Verify that the service on the destination is running and is accepting
requests.

Dado que la comunicación remota de PowerShell usa el protocolo HTTP, se ve afectada por la configuración del proxy HTTP.Because PowerShell remoting uses the HTTP protocol, it is affected by HTTP proxy settings. En las empresas que tienen servidores proxy, los usuarios no pueden acceder a un equipo remoto de PowerShell directamente.In enterprises that have proxy servers, users cannot access a PowerShell remote computer directly.

Para resolver este problema, use las opciones de configuración de proxy en el comando remoto.To resolve this problem, use proxy setting options in your remote command. Las siguientes configuraciones están disponibles:The following settings are available:

  • ProxyAccessTypeProxyAccessType
  • ProxyAuthenticationProxyAuthentication
  • ProxyCredentialProxyCredential

Para establecer estas opciones para un comando determinado, use el procedimiento siguiente:To set these options for a particular command, use the following procedure:

  1. Use los parámetros ProxyAccessType , ProxyAuthentication y ProxyCredential del New-PSSessionOption cmdlet para crear un objeto de opción de sesión con la configuración de proxy para su empresa.Use the ProxyAccessType , ProxyAuthentication , and ProxyCredential parameters of the New-PSSessionOption cmdlet to create a session option object with the proxy settings for your enterprise. Guardar el objeto de opción es una variable.Save the option object is a variable.

  2. Use la variable que contiene el objeto de opción como el valor del parámetro SessionOption de un New-PSSession Enter-PSSession comando, o Invoke-Command .Use the variable that contains the option object as the value of the SessionOption parameter of a New-PSSession, Enter-PSSession, or Invoke-Command command.

Por ejemplo, el siguiente comando crea un objeto de opción de sesión con opciones de sesión de proxy y, a continuación, usa el objeto para crear una sesión remota.For example, the following command creates a session option object with proxy session options and then uses the object to create a remote session.

$SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01

New-PSSession -ConnectionURI https://www.fabrikam.com

Para obtener más información sobre el New-PSSessionOption cmdlet, consulte New-PSSessionOption.For more information about the New-PSSessionOption cmdlet, see New-PSSessionOption.

Para establecer estas opciones para todos los comandos remotos de la sesión actual, use el objeto New-PSSessionOption de opción que crea en el valor de la $PSSessionOption variable de preferencia.To set these options for all remote commands in the current session, use the option object that New-PSSessionOption creates in the value of the $PSSessionOption preference variable. Para obtener más información, vea about_Preference_Variables.For more information, see about_Preference_Variables.

Para establecer estas opciones para todos los comandos remotos, todas las sesiones de PowerShell en el equipo local, agregue la $PSSessionOption variable de preferencia a su perfil de PowerShell.To set these options for all remote commands all PowerShell sessions on the local computer, add the $PSSessionOption preference variable to your PowerShell profile. Para obtener más información sobre los perfiles de PowerShell, consulte about_Profiles.For more information about PowerShell profiles, see about_Profiles.

Cómo detectar una sesión de 32 bits en un equipo de 64 bitsHow to detect a 32-bit session on a 64-bit computer

ERROR: The term "<tool-Name>" is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.

Si el equipo remoto ejecuta una versión de 64 bits de Windows y el comando remoto usa una configuración de sesión de 32 bits, como Microsoft. PowerShell32, Administración remota de Windows (WinRM) carga un proceso WOW64 y Windows redirige automáticamente todas las referencias al $env:Windir\System32 directorio al directorio $env:Windir\SysWOW64 .If the remote computer is running a 64-bit version of Windows, and the remote command is using a 32-bit session configuration, such as Microsoft.PowerShell32, Windows Remote Management (WinRM) loads a WOW64 process and Windows automatically redirects all references to the $env:Windir\System32 directory to the $env:Windir\SysWOW64 directory.

Como resultado, si intenta usar herramientas en el directorio system32 que no tienen homólogos en el directorio SysWow64, como Defrag.exe , las herramientas no se pueden encontrar en el directorio.As a result, if you try to use tools in the System32 directory that do not have counterparts in the SysWow64 directory, such as Defrag.exe, the tools cannot be found in the directory.

Para buscar la arquitectura del procesador que se utiliza en la sesión, use el valor de la variable de entorno PROCESSOR_ARCHITECTURE .To find the processor architecture that is being used in the session, use the value of the PROCESSOR_ARCHITECTURE environment variable. El siguiente comando busca la arquitectura de procesador de la sesión en la $s variable.The following command finds the processor architecture of the session in the $s variable.

$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86

Para obtener más información sobre las configuraciones de sesión, vea about_Session_Configurations.For more information about session configurations, see about_Session_Configurations.

Solución de problemas de directivas y preferenciasTroubleshooting policy and preference issues

En esta sección se describen los problemas de comunicación remota relacionados con las directivas y las preferencias establecidas en los equipos locales y remotos.This section discusses remoting problems that are related to policies and preferences set on the local and remote computers.

Cómo cambiar la Directiva de ejecución para Import-PSSession y Import-ModuleHow to change the execution policy for Import-PSSession and Import-Module

ERROR: Import-Module: File <filename> cannot be loaded because the
execution of scripts is disabled on this system.

Los Import-PSSession Export-PSSession cmdlets y crean módulos que contienen archivos de script sin firmar y archivos de formato.The Import-PSSession and Export-PSSession cmdlets create modules that contains unsigned script files and formatting files.

Para importar los módulos creados por estos cmdlets, ya sea mediante Import-PSSession o Import-Module , la Directiva de ejecución en la sesión actual no puede estar restringida ni AllSigned.To import the modules that are created by these cmdlets, either by using Import-PSSession or Import-Module, the execution policy in the current session cannot be Restricted or AllSigned. Para obtener información acerca de las directivas de ejecución de PowerShell, consulte about_Execution_Policies.For information about PowerShell execution policies, see about_Execution_Policies.

Para importar los módulos sin cambiar la Directiva de ejecución para el equipo local que se establece en el registro, use el parámetro de ámbito de Set-ExecutionPolicy para establecer una directiva de ejecución menos restrictiva para un único proceso.To import the modules without changing the execution policy for the local computer that is set in the registry, use the Scope parameter of Set-ExecutionPolicy to set a less restrictive execution policy for a single process.

Por ejemplo, el siguiente comando inicia un proceso con la RemoteSigned Directiva de ejecución.For example, the following command starts a process with the RemoteSigned execution policy. El cambio de la Directiva de ejecución solo afecta al proceso actual y no cambia la configuración del registro ExecutionPolicy de PowerShell.The execution policy change affects only the current process and does not change the PowerShell ExecutionPolicy registry setting.

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

También puede usar el parámetro ExecutionPolicy de PowerShell.exe para iniciar una sesión única con una directiva de ejecución menos restrictiva.You can also use the ExecutionPolicy parameter of PowerShell.exe to start a single session with a less restrictive execution policy.

PowerShell.exe -ExecutionPolicy RemoteSigned

Para obtener más información acerca de las directivas de ejecución, consulte about_Execution_Policies.For more information about execution policies, see about_Execution_Policies. Para obtener más información, escriba PowerShell.exe -?.For more information, type PowerShell.exe -?.

Cómo establecer y cambiar cuotasHow to set and change quotas

ERROR: The total data received from the remote client exceeded allowed
maximum.

Puede usar cuotas para proteger el equipo local y el equipo remoto de un uso excesivo de los recursos, tanto accidental como malintencionado.You can use quotas to protect the local computer and the remote computer from excessive resource use, both accidental and malicious.

Las siguientes cuotas están disponibles en la configuración básica.The following quotas are available in the basic configuration.

  • El proveedor WSMan (WSMan:) proporciona varias configuraciones de cuota, como la configuración de MaxEnvelopeSizeKB y MaxProviderRequests en el WSMan:<ComputerName> nodo y los valores de MaxConcurrentOperations , propiedades maxconcurrentoperationsperuser y MaxConnections en el WSMan:<ComputerName>\Service nodo.The WSMan provider (WSMan:) provides several quota settings, such as the MaxEnvelopeSizeKB and MaxProviderRequests settings in the WSMan:<ComputerName> node and the MaxConcurrentOperations , MaxConcurrentOperationsPerUser , and MaxConnections settings in the WSMan:<ComputerName>\Service node.

  • Puede proteger el equipo local mediante los parámetros MaximumReceivedDataSizePerCommand y MaximumReceivedObjectSize del New-PSSessionOption cmdlet y la $PSSessionOption variable de preferencia.You can protect the local computer by using the MaximumReceivedDataSizePerCommand and MaximumReceivedObjectSize parameters of the New-PSSessionOption cmdlet and the $PSSessionOption preference variable.

  • Puede proteger el equipo remoto agregando restricciones a las configuraciones de sesión, como el uso de los parámetros MaximumReceivedDataSizePerCommandMB y MaximumReceivedObjectSizeMB del Register-PSSessionConfiguration cmdlet.You can protect the remote computer by adding restrictions to the session configurations, such as by using the MaximumReceivedDataSizePerCommandMB and MaximumReceivedObjectSizeMB parameters of the Register-PSSessionConfiguration cmdlet.

Cuando las cuotas entran en conflicto con un comando, PowerShell genera un error.When quotas conflict with a command, PowerShell generates an error.

Para resolver el error, cambie el comando remoto para que cumpla la cuota.To resolve the error, change the remote command to comply with the quota. O bien, determine el origen de la cuota y, a continuación, aumente la cuota para permitir que se complete el comando.Or, determine the source of the quota, and then increase the quota to allow the command to complete.

Por ejemplo, el comando siguiente aumenta la cuota de tamaño de objeto en la configuración de sesión Microsoft. PowerShell en el equipo remoto de 10 MB (el valor predeterminado) a 11 MB.For example, the following command increases the object size quota in the Microsoft.PowerShell session configuration on the remote computer from 10 MB (the default value) to 11 MB.

Set-PSSessionConfiguration -Name microsoft.PowerShell `
  -MaximumReceivedObjectSizeMB 11 -Force

Para obtener más información acerca del New-PSSessionOption cmdlet, vea New-PSSessionOption .For more information about the New-PSSessionOption cmdlet, see New-PSSessionOption.

Para obtener más información sobre las cuotas de WS-Management, vea about_WSMan_Provider.For more information about the WS-Management quotas, see about_WSMan_Provider.

Cómo resolver errores de tiempo de esperaHow to resolve timeout errors

ERROR: The WS-Management service cannot complete the operation within
the time specified in OperationTimeout.

Puede usar los tiempos de espera para proteger el equipo local y el equipo remoto de un uso excesivo de los recursos, tanto accidental como malintencionado.You can use timeouts to protect the local computer and the remote computer from excessive resource use, both accidental and malicious. Cuando los tiempos de espera se establecen en el equipo local y remoto, PowerShell usa la configuración de tiempo de espera más corta.When timeouts are set on both the local and remote computer, PowerShell uses the shortest timeout settings.

Los tiempos de espera siguientes están disponibles en la configuración básica.The following timeouts are available in the basic configuration.

  • El proveedor WSMan (WSMan:) proporciona varias configuraciones de tiempo de espera del lado cliente y del lado de servicio, como la configuración de MaxTimeoutms en el WSMan:<ComputerName> nodo y la configuración de EnumerationTimeoutms y MaxPacketRetrievalTimeSeconds en el WSMan:<ComputerName>\Service nodo.The WSMan provider (WSMan:) provides several client-side and service-side timeout settings, such as the MaxTimeoutms setting in the WSMan:<ComputerName> node and the EnumerationTimeoutms and MaxPacketRetrievalTimeSeconds settings in the WSMan:<ComputerName>\Service node.

  • Puede proteger el equipo local mediante los parámetros CancelTimeout , IdleTimeout , OpenTimeout y OperationTimeout del New-PSSessionOption cmdlet y la $PSSessionOption variable de preferencia.You can protect the local computer by using the CancelTimeout , IdleTimeout , OpenTimeout , and OperationTimeout parameters of the New-PSSessionOption cmdlet and the $PSSessionOption preference variable.

  • También puede proteger el equipo remoto estableciendo los valores de tiempo de espera mediante programación en la configuración de sesión de la sesión.You can also protect the remote computer by setting timeout values programmatically in the session configuration for the session.

Cuando un valor de tiempo de espera no permite que se complete una operación, PowerShell finaliza la operación y genera un error.When a timeout value does not permit a operation to complete, PowerShell terminates the operation and generates an error.

Para resolver el error, cambie el comando para que se complete en el intervalo de tiempo de espera o determine el origen del límite de tiempo de espera y aumente el intervalo de tiempo de espera para que se complete el comando.To resolve the error, change the command to complete within the timeout interval or determine the source of the timeout limit and increase the timeout interval to allow the command to complete.

Por ejemplo, los siguientes comandos usan el New-PSSessionOption cmdlet para crear un objeto de opción de sesión con un valor de OperationTimeout de 4 minutos (en MS) y, a continuación, usar el objeto de opción de sesión para crear una sesión remota.For example, the following commands use the New-PSSessionOption cmdlet to create a session option object with an OperationTimeout value of 4 minutes (in MS) and then use the session option object to create a remote session.

$pso = New-PSSessionoption -OperationTimeout 240000

New-PSSession -ComputerName Server01 -sessionOption $pso

Para obtener más información sobre los tiempos de espera de WS-Management, vea el tema de ayuda del proveedor WSMan (tipo Get-Help WSMan ).For more information about the WS-Management timeouts, see the Help topic for the WSMan provider (type Get-Help WSMan).

Para obtener más información sobre el New-PSSessionOption cmdlet, consulte New-PSSessionOption.For more information about the New-PSSessionOption cmdlet, see New-PSSessionOption.

Solución de problemas de comportamiento no respondeTroubleshooting unresponsive behavior

En esta sección se describen los problemas de comunicación remota que impiden que se complete un comando y se impide o retrasa la devolución del símbolo del sistema de PowerShell.This section discusses remoting problems that prevent a command from completing and prevent or delay the return of the PowerShell prompt.

Cómo interrumpir un comandoHow to interrupt a command

Algunos programas nativos de Windows, como los programas con una interfaz de usuario, las aplicaciones de consola que solicitan la entrada y las aplicaciones de consola que usan la API de la consola Win32 no funcionan correctamente en el host remoto de PowerShell.Some native Windows programs, such as programs with a user interface, console applications that prompt for input, and console applications that use the Win32 console API, do not work correctly in the PowerShell remote host.

Al usar estos programas, es posible que vea un comportamiento inesperado, como la ausencia de salida, la salida parcial o un comando remoto que no se completa.When you use these programs, you might see unexpected behavior, such as no output, partial output, or a remote command that does not complete.

Para finalizar un programa que no responde, escriba Ctrl + C.To end an unresponsive program, type CTRL+C. Para ver los errores que se puedan haber comunicado, escriba $error en el host local y en la sesión remota.To view any errors that might have been reported, type $error in the local host and the remote session.

Cómo recuperarse de un error de operaciónHow to recover from an operation failure

ERROR: The I/O operation has been aborted because of either a thread exit
or an  application request.

Este error se devuelve cuando se termina una operación antes de que se complete.This error is returned when an operation is terminated before it completes. Normalmente, se produce cuando el servicio WinRM se detiene o se reinicia mientras otras operaciones de WinRM están en curso.Typically, it occurs when the WinRM service stops or restarts while other WinRM operations are in progress.

Para resolver este problema, compruebe que el servicio WinRM se está ejecutando y vuelva a intentar el comando.To resolve this issue, verify that the WinRM service is running and try the command again.

  1. Inicie PowerShell con la opción Ejecutar como administrador .Start PowerShell with the Run as administrator option.

  2. Ejecute el siguiente comando:Run the following command:

    Start-Service WinRM

  3. Vuelva a ejecutar el comando que generó el error.Re-run the command that generated the error.

Limitaciones de Linux y macOSLinux and macOS limitations

AuthenticationAuthentication

Solo la autenticación básica funciona en macOS y, al intentar usar otros esquemas de autenticación, se puede producir el bloqueo del proceso.Only basic authentication works on macOS and attempting to use other authentication schemes may result in the process crashing.

Consulte las instrucciones de autenticación de OMI .Please see the OMI authentication instructions.

CONSULTE TAMBIÉNSEE ALSO

Import-PSSessionImport-PSSession

Export-PSSessionExport-PSSession

Import-ModuleImport-Module

about_Remoteabout_Remote

about_Remote_Requirementsabout_Remote_Requirements

about_Remote_Variablesabout_Remote_Variables