17 votos

Copia DSC de PowerShell desde un recurso compartido de red

Estoy intentando utilizar PowerShell DSC para copiar el contenido de una carpeta desde un recurso compartido de red. Aquí está el código:

Configuration TestSetup {
    Node localhost {
        File Test {
            SourcePath = "\\Server\SomeShare\SomeFolder"
            DestinationPath = "E:\test"
            Recurse = $true
            Type = "Directory"
        }
    }
}

Sin embargo, esto no funciona: cuando lo ejecuto recibo el siguiente mensaje de error:

The related file/directory is: \\Server\SomeShare\SomeFolder.
The path cannot point to the root directory or to the root of a net share.
SourcePath must be specified if you want to configure the destination directory recursively. Make sure that SourcePath is a directory and that it is accessible.
    + CategoryInfo          : InvalidArgument: (:) [], CimException
    + FullyQualifiedErrorId : MI RESULT 4
    + PSComputerName        : localhost

The SendConfigurationApply function did not succeed.
    + CategoryInfo          : InvalidArgument: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 4
    + PSComputerName        : localhost

Obtengo resultados similares cuando intento instalar un paquete desde una red compartida o extraer un archivo desde una red compartida. Estoy ejecutando PowerShell 4 en Windows Server 2008 R2 SP1.

¿Hay alguna forma de utilizar PowerShell DSC con recursos compartidos de red?

0 votos

¿No se describe una solución en este enlace? powershellmagazine.com/2013/09/02/

0 votos

Gracias por indicarme la dirección correcta. No me llegó del todo porque el recurso compartido estaba en la misma máquina y por eso tuve que conceder permisos a la cuenta SYSTEM. Si quieres poner una respuesta apuntando a ese enlace, te concedo la recompensa.

14voto

Richard Puntos 267

DSC Local Configuration Manager se ejecuta con la cuenta local de SYSTEM, no con su cuenta de usuario. Por lo tanto, no podrá acceder a los recursos de la red a menos que se le den permisos explícitos.

Hay dos situaciones posibles. O bien el recurso compartido está en la misma máquina a la que se está aplicando la configuración DSC (llamémosla máquina A) o el recurso compartido está en una máquina diferente (llamémosla máquina B).

Si el recurso compartido está en la máquina A, es necesario conceder permisos de LECTURA al usuario SYSTEM. Por ejemplo:

net share SomeShare=C:\SomeShare /GRANT:"NT AUTHORITY\SYSTEM",READ

Si el recurso compartido está en la máquina B, hay que conceder permisos de LECTURA a la cuenta del ordenador de la máquina A. Por ejemplo:

net share SomeShare=C:\SomeShare /GRANT:DOMAIN\MachineA$,READ

Fuente: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/

5voto

ErikE Puntos 2371

El DSC se ejecuta en localhost para aplicar la configuración. Esto significa que el DSC es necesario distribuir los archivos de recursos a cada máquina que se va a configurar a través de DSC .

Por lo tanto, la gestión de los permisos es crucial a la hora de copiar los archivos DSC de un recurso compartido.

DSC se ejecuta bajo el NT AUTHORITY\SYSTEM cuenta y a menos que el Credential se ha establecido el atributo Computer account se utiliza cuando se extraen los archivos de un recurso compartido de red.

Por lo tanto, y dependiendo de la procedencia de los archivos, el SYSTEM cuenta necesita ser concedida read permisos en un recurso compartido local y el Computer account necesitan ser concedidos read permisos en un recurso compartido remoto.

Esto se detalla concretamente en la respuesta de Richards, que amplía la sintaxis en la fuente original del blog para esta información.

0voto

Nathan Hartley Puntos 752

No tengo tiempo en este momento para investigar más sobre esto, pero parece que es posible pasar credenciales de forma segura para que el Administrador de Configuración Local las utilice. De hecho, en la publicación del blog su ejemplo utiliza el recurso Archivo para extraer archivos de un recurso compartido de red. Espero probar esto pronto, y luego volver para dar más cuerpo a esta respuesta.

Blog de TechNet: ¿Desea asegurar las credenciales en la configuración del estado deseado de Windows PowerShell? - por Travis Plunk

-2voto

TheCompWiz Puntos 5222

Powershell es casi tan tonto como el viejo cmd Shell. Todavía tiene un soporte muy limitado para las rutas UNC. Teniendo esto en cuenta... ¿has probado a ponerle un alias a la ruta UNC? por ejemplo

New-PSDrive -Name UNCPath -PSProvider FileSystem -Root \\Server\SomeShare\

Y luego referirse a la ruta como UNCPath:\SomeFolder . Limpieza con Remove-PSDrive cuando hayas terminado.

Además, a veces se puede especificar FileSystem::\\Server\SomeShare\SomeFolder como el camino. He visto casos en los que esto no funciona... pero vale la pena intentarlo.

0 votos

En este contexto (datos de configuración) FileSystem::\\Server\SomeShare\SomeFolder es definitivamente el camino a seguir

2 votos

Gracias por las sugerencias, pero lamentablemente al utilizar cualquiera de ellas me aparece el mensaje de error Relative path is not supported

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: