Estou tentando usar o PowerShell DSC para copiar o conteúdo da pasta de um compartilhamento de rede. Aqui está o código:
Configuration TestSetup {
Node localhost {
File Test {
SourcePath = "\\Server\SomeShare\SomeFolder"
DestinationPath = "E:\test"
Recurse = $true
Type = "Directory"
}
}
}
No entanto, isso não funciona - quando eu o executo, recebo a seguinte mensagem de erro:
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
Recebo resultados semelhantes ao tentar instalar um pacote de um compartilhamento de rede ou extrair um arquivo morto de um compartilhamento de rede. Estou executando o PowerShell 4 no Windows Server 2008 R2 SP1.
Existe uma maneira de usar o PowerShell DSC com compartilhamentos de rede?
windows
powershell
network-share
dsc
Richard
fonte
fonte
Respostas:
O DSC Local Configuration Manager é executado como a conta SYSTEM local, não a sua conta de usuário. Portanto, ele não poderá acessar os recursos da rede, a menos que recebam permissões explícitas.
Existem duas situações possíveis. O compartilhamento está na mesma máquina em que a configuração DSC está sendo aplicada (vamos chamar esta máquina A) ou o compartilhamento está em uma máquina diferente (vamos chamar essa máquina B).
Se o compartilhamento estiver na máquina A, as permissões READ precisarão ser concedidas ao usuário do SISTEMA. Por exemplo:
Se o compartilhamento estiver na máquina B, é necessário conceder permissões de leitura à conta do computador da máquina A. Por exemplo:
Fonte: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/
fonte
A
DSC
execução é executadalocalhost
para aplicar a configuração. Isso significa que osDSC
arquivos de recursos precisam ser distribuídos para cada máquina que deve ser configuradaDSC
.Portanto, o gerenciamento de permissões é crucial ao copiar os arquivos DSC de um compartilhamento.
DSC
é executado naNT AUTHORITY\SYSTEM
conta e, a menos que oCredential
atributo tenha sido definido, eleComputer account
é usado ao extrair os arquivos de um compartilhamento de rede.Portanto, e dependendo de onde os arquivos são extraídos, a
SYSTEM
conta precisa receberread
permissões em um compartilhamento local e aComputer account
necessidade de obterread
permissões em um compartilhamento remoto.Isso está detalhado detalhadamente na resposta de Richards, que expande a sintaxe na fonte original do blog para essas informações.
fonte
No momento, não tenho tempo para investigar mais isso, mas parece possível passar credenciais com segurança para o Gerenciador de Configuração Local usar. De fato, na postagem do blog, seu exemplo usa o recurso File para extrair arquivos de um compartilhamento de rede. Espero tentar isso em breve, e depois voltar a melhorar essa resposta.
Blog do TechNet: Deseja proteger credenciais na configuração de estado desejado do Windows PowerShell? - por Travis Plunk
fonte
O PowerShell é quase tão burro quanto o antigo shell cmd. Ele ainda possui suporte muito limitado para caminhos UNC. Com isso em mente ... você já tentou usar o alias do caminho UNC? ie
E, em seguida, consulte o caminho como
UNCPath:\SomeFolder
. LimpeRemove-PSDrive
quando terminar.Além disso, às vezes você pode especificar
FileSystem::\\Server\SomeShare\SomeFolder
como o caminho. Já vi casos em que isso não funciona ... mas vale a pena tentar.fonte
FileSystem::\\Server\SomeShare\SomeFolder
é definitivamente o caminho a percorrerRelative path is not supported