Cópia DSC do PowerShell de compartilhamento de rede

16

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"
        }
    }
}

Isso não funciona, no entanto - quando eu 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

Eu obtenho resultados semelhantes ao tentar instalar um pacote de um compartilhamento de rede ou extrair um arquivo de um compartilhamento de rede. Estou executando o PowerShell 4 no Windows Server 2008 R2 SP1.

Existe uma maneira de usar o DSC do PowerShell com compartilhamentos de rede?

    
por Richard 21.01.2014 / 19:06

4 respostas

13

O DSC Local Configuration Manager é executado como a conta SYSTEM local e não como sua conta de usuário. Portanto, ele não poderá acessar os recursos da rede, a menos que receba 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 essa 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 precisam ser concedidas ao usuário SYSTEM. Por exemplo:

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

Se o compartilhamento estiver na máquina B, as permissões READ precisam ser concedidas à conta de computador da máquina A. Por exemplo:

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

Fonte: link

    
por 28.01.2014 / 12:31
4

O DSC é executado em localhost para aplicar a configuração. Isso significa que os arquivos de recurso DSC precisam ser distribuídos para cada máquina que deve ser configurada através de DSC .

O gerenciamento de permissões é, portanto, crucial ao copiar os arquivos DSC de um compartilhamento.

DSC é executado na conta NT AUTHORITY\SYSTEM e, a menos que o atributo Credential tenha sido definido, o Computer account é usado ao extrair os arquivos de um compartilhamento de rede.

Portanto, e dependendo de onde os arquivos são extraídos, a conta SYSTEM precisa receber read permissões em um compartilhamento local e Computer account precisa receber read permissões em um compartilhamento remoto. / p>

Isto é concretamente detalhado na resposta de Richards, que expande a sintaxe em a fonte original do blog para esta informação.

    
por 28.01.2014 / 22:25
0

Não tenho tempo no momento para analisar mais sobre isso, mas parece que é possível transmitir com segurança credenciais para o Gerenciador de configuração local usar. De fato, no blog que publica, seu exemplo usa o recurso Arquivo para extrair arquivos de um compartilhamento de rede. Espero experimentar isso em breve, depois voltar para melhorar a resposta.

Blog do TechNet: Deseja proteger as credenciais na Configuração de Estado Desejado do Windows PowerShell? - por Travis Plunk

    
por 02.03.2014 / 04:40
-1

O Powershell é quase tão idiota quanto o antigo escudo do cmd. Ainda tem suporte muito limitado para caminhos UNC. Com isso em mente ... você já tentou aliasing o caminho UNC? ou seja,

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

E, em seguida, consulte o caminho como UNCPath:\SomeFolder . Limpar com Remove-PSDrive quando terminar.

Além disso, às vezes, você pode especificar FileSystem::\Server\SomeShare\SomeFolder como o caminho. Eu vi casos em que isso não funciona ... mas vale a pena tentar.

    
por 21.01.2014 / 19:18