2011-12-02 7 views
14

Esto es una locura, estoy empezando en PowerShell. Y, por supuesto, necesito hacer el trabajo administrativo de forma remota.Qué configuración de seguridad impide que Remote PowerShell 2.0 acceda a las rutas UNC

Un simple

dir \\server\share\folder 

sólo se niega a trabajar, me sale este error

Get-ChildItem : Cannot find path '\\server\share\folder' because it does not exist. 
    + CategoryInfo   : ObjectNotFound: (\\server\share\folder:String) [Get-ChildItem], ItemNotFoundException 
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand 

Para mí es bastante obvio que es una cuestión de derechos de acceso. Y tenemos un dominio aquí en la compañía. He iniciado sesión en el servidor, con exactamente la misma cuenta de usuario, en VNC y puedo ver la ruta UNC. Pero cada vez que trato de copiar un archivo desde mi escritorio con la conexión remota. ¡Simplemente no funcionará!

Puedo hacer muchas otras cosas, así que estoy seguro de que estoy conectado.

+0

en un comando dos shell 'dir \\ server \ share \ folder' no dan error ?? –

+0

Eso es correcto. Tal vez debería escribir "dir \\ MyServer \ MyShare \ MyFolder". Descubrí que necesito configurar CredSSP, lo hice y aún recibo un tiempo de espera seguido de Enable-WSManCredSSP: este comando no se puede ejecutar porque la configuración no se puede habilitar. Esto puede suceder si no hay conexión de red presente. –

+0

Por ahora, utilicé gpedit.msc para permitir nuevas credenciales en AMBAS computadoras. Establecí la nueva política de credenciales y uso los comandos 'enable-wsmancredssp -role client -delegatecomputer computer1.domain.com' y' enable-wsmancredssp -role server'. Para el estado ejecuto 'Get-WSManCredSSP' y obtengo ** La máquina está configurada para permitir la delegación de nuevas credenciales a los siguientes objetivos: wsman/computer1.domain.com, wsm an/*. Domain.com. Esta computadora está configurada para recibir credenciales de una computadora cliente remota. ** ¡No puedo encontrar ninguna otra cosa que hacer y todavía no funciona! –

Respuesta

15

Para que esto funcione, debe configurar sus equipos locales y remotos.

En el servidor remoto, ejecute el siguiente comando:

Enable-WSManCredSSP -Role server 

Usted sabrá que las cosas están confgured correctamente si se ejecuta el cmdlet Get-WSManCredSSP y obtener el siguiente resultado:

The machine is not configured to allow delegating fresh credentials. This computer is configured to receive credentials from a remote client computer.

En su computadora local, desde un aviso de PowerShell administrativo, debe permitir la delegación de credenciales en PowerShell. Ejecute el siguiente comando:

Enable-WSManCredSSP -Role Client -DelegateComputer <REMOTE_COMPUTER_NAME> 

Puede activar todos los servidores mediante el uso de REMOTE_COMPUTER_NAME *.

Usted sabrá que esto está configurado correctamente cuando se ejecuta Get-WSManCredSSP y obtener el siguiente resultado:

The machine is configured to allow delegating fresh credentials to the following target(s): wsman/REMOTE_SERVER_NAME
This computer is not configured to receive credentials from a remote client computer.

en su máquina local, actualizar la directiva de grupo para permitir que sus credenciales para ser delegadas a la servidor remoto.

  1. Abra gpedit.msc y vaya a Configuración del equipo> Plantillas administrativas> Sistema> Delegación de credenciales.
  2. Haga doble clic en "Permitir la delegación de nuevas credenciales con autenticación de servidor NTLM".
  3. Habilite la configuración y agregue el servidor de compilación a la lista de servidores como WSMAN/BuildServerName. (Puede activar todos los servidores mediante la introducción de WSMAN/*.)

Entonces, cuando se necesita para ejecutar el comando en el servidor remoto, no se puede utilizar cualquiera de los comandos * -PSSession porque puede CredSSP no use credenciales en caché Tienes que iniciar la sesión utilizando Invoke-Command, y utilizar CredSSP como el valor al parámetro de autenticación, así:

Invoke-Command -ScriptBlock { # remote commands here } ` 
       -ComputerName <REMOTE_COMPUTER_NAME> ` 
       -Authentication CredSSP ` 
       -Credential <USERNAME> 
+1

¡Gran respuesta y mucha información buena gracias! Desafortunadamente, todavía tengo un problema. Realicé los cambios en la política de grupo pero cuando ejecuto lo siguiente en una ventana PS elevada: "Enable-WSManCredSSP -role Client -DelegateComputer d-vasbiz01 -force" Aparece el siguiente error: "Enable-WSManCredSSP: este comando no se puede ejecutar porque no se puede habilitar la configuración "any ideas? –

+0

¡Lo encontré! El problema estaba en el editor de políticas de grupo. Necesitaba prefijar el nombre del servidor al que estoy delegando con "wsman /". Esto es lo que dice la respuesta, ¡pero lo extrañé! Muchas gracias por la respuesta. –

+0

No tuve que hacer los pasos de "política de grupo" simplemente habilitar el "cliente" y habilitar los roles de "servidor" en las computadoras correctas. – rob

0

Powershell también utiliza la configuración de seguridad de Internet Explorer en la ejecución de scripts remotos.

He encontrado que, para cualquier máquina que intente ejecutar una secuencia de comandos remota, si agrego la ruta de acceso unc de la máquina remota a mis sitios intrAnet de confianza, puedo ejecutar scripts entonces (suponiendo que mi política de ejecución sea elegante está configurado para remotesigned .... "set-executionpolicy remotesigned").

Hago un montón de administración para múltiples servidores con y sin SQL, y nunca he hecho nada con Enable-WSManCredSSP.

Cuestiones relacionadas