Estoy tratando de usar PowerShell DSC para copiar el contenido de la 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 aparece 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 un recurso compartido de red o extraer un archivo de un recurso compartido de red. Estoy ejecutando PowerShell 4 en Windows Server 2008 R2 SP1.
¿Hay alguna manera de usar PowerShell DSC con recursos compartidos de red?
windows
powershell
network-share
dsc
Ricardo
fuente
fuente
Respuestas:
El DSC Local Configuration Manager se ejecuta como la cuenta del SISTEMA local, no como su cuenta de usuario. Por lo tanto, no podrá acceder a los recursos de la red a menos que se le otorguen permisos explícitos.
Hay dos situaciones posibles. O el recurso compartido está en la misma máquina a la que se aplica la configuración DSC (llamemos a esta máquina A) o el recurso compartido está en una máquina diferente (llamemos a esta máquina B).
Si el recurso compartido está en la máquina A, los permisos de LECTURA deben otorgarse al usuario del SISTEMA. Por ejemplo:
Si el recurso compartido está en la máquina B, los permisos de LECTURA deben otorgarse a la cuenta de la computadora de la máquina A. Por ejemplo:
Fuente: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/
fuente
Se
DSC
ejecutalocalhost
para aplicar la configuración. Esto significa que losDSC
archivos de recursos deben distribuirse a cada máquina a través de la cual se configuraráDSC
.Por lo tanto, la administración de permisos es crucial al copiar los archivos DSC de un recurso compartido.
DSC
se ejecuta bajo laNT AUTHORITY\SYSTEM
cuenta y, a menos queCredential
se haya establecido el atributo,Computer account
se utiliza al extraer los archivos de un recurso compartido de red.Por lo tanto y dependiendo de dónde se extraen los archivos, la
SYSTEM
cuenta debe tenerread
permisos en un recurso compartido local y laComputer account
necesidad deread
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.
fuente
No tengo tiempo en este momento para investigar más sobre esto, pero parece que es posible pasar de forma segura las credenciales para que las use el Administrador de configuración local. De hecho, en la publicación del blog, su ejemplo utiliza el recurso File para extraer archivos de un recurso compartido de red. Espero probar esto pronto, luego volveré a dar una mejor respuesta.
Blog de TechNet: ¿Desea proteger las credenciales en la configuración de estado deseada de Windows PowerShell? - por Travis Plunk
fuente
Powershell es casi tan tonto como el viejo cmd shell. Todavía tiene un soporte muy limitado para rutas UNC. Con eso en mente ... ¿has intentado alias la ruta UNC? es decir
Y luego se refieren a la ruta como
UNCPath:\SomeFolder
. Limpia conRemove-PSDrive
cuando hayas terminado.Además, a veces puede especificar
FileSystem::\\Server\SomeShare\SomeFolder
como la ruta. He visto casos en los que esto no funciona ... pero vale la pena intentarlo.fuente
FileSystem::\\Server\SomeShare\SomeFolder
es definitivamente el camino a seguirRelative path is not supported