Cópia de arquivo DSC Powershell - Máquinas de grupo de trabalho

4

Tenho uma máquina para a qual preciso copiar arquivos de um compartilhamento de rede (no domínio) para uma implantação de uma máquina fora do domínio.

Atualmente, tenho o seguinte código:

Configuration deployWebsite 
{ 
  param 
  (
  [string[]] $MachineName = "localhost"
  )

  Node $MachineName 
  { 

    File Test {
      SourcePath = "\buildserver\mywebsite"
      DestinationPath = "C:\deployments"
      Recurse = $true
      Type = "Directory"

    }
  }
}
deployWebsite -MachineName "at-test-2012"

Eu corro isso e sou capaz de gerar um arquivo MOF que é bom.

O erro que recebo é o seguinte:

PS C:\dsc> Start-DscConfiguration -Path .\deployWebsite -CimSession $sess -Wait -Verbose -Force
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsof
t/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer AT-TEST-2012 with user sid S-1-5-21-77344112-180879520-4075690869-1002.
VERBOSE: [AT-TEST-2012]: LCM:  [ Start  Set      ]
VERBOSE: [AT-TEST-2012]: LCM:  [ Start  Resource ]  [[File]Test]
VERBOSE: [AT-TEST-2012]: LCM:  [ Start  Test     ]  [[File]Test]
VERBOSE: [AT-TEST-2012]:                            [[File]Test] Access is denied.
VERBOSE: [AT-TEST-2012]:                            [[File]Test] The related file/directory is: \buildserver\mywebsite.
VERBOSE: [AT-TEST-2012]:                            [[File]Test] The path cannot point to the root directory or to the root of a net share.
VERBOSE: [AT-TEST-2012]:                            [[File]Test] The related file/directory is: \buildserver\mywebsite.
VERBOSE: [AT-TEST-2012]:                            [[File]Test] SourcePath must be specified if you want to configure the destination directory recursively. Make sure that SourcePath is a di
rectory and that it is accessible.
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        : at-test-2012

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

VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 3.979 seconds

A sessão do CIM pareceu estar bem configurada.

PS C:\dsc> Get-CimSession


Id           : 1
Name         : CimSession1
InstanceId   : 7ae9cd9b-fc65-4879-94c1-ec9805479500
ComputerName : at-test-2012
Protocol     : WSMAN

Foi criado com o seguinte código:

$sess = New-CIMSession -cn at-test-2012 -Authentication Credssp -Credential $cred

E foi passado credenciais para um usuário que é administrador local sobre a máquina do grupo de trabalho e é um usuário local na máquina do domínio que está tentando extrair arquivos.

Se eu tentar outro teste criando uma PSSession e tentando copiar os arquivos, ele funciona bem e vejo os arquivos aparecerem na máquina do grupo de trabalho.

$cred = Get-Credential -Credential deployuser
$sess = New-PSSession -cn at-test-2012 -Authentication Credssp -Credential $cred 

Invoke-Command -Session $sess -ScriptBlock {Copy-Item -Path '\buildserver\mywebsite' -Destination 'C:\deployments'}

O problema é que o Start-DscConfiguration não parece suportar PSSessions, apenas CIMSessions.

Então, alguma indicação sobre o que tentar em seguida? Acho que minha CIMsession está configurada corretamente e acho que tenho todas as configurações necessárias no compartilhamento de arquivos, a máquina do grupo de trabalho está toda configurada corretamente, pois o PSSession funciona bem.

Felicidades, Andy

    
por atownsend 22.10.2015 / 11:48

1 resposta

0

Geralmente, abordo um problema como esse de três maneiras:

  1. Cria uma tarefa agendada na máquina remota com explícito credencial, para fazer o Start-DscConfiguration localmente. Vai correr exatamente como usuário local para fins do próximo salto no remoting.
  2. Considere criar e usar um ponto de extremidade do JEA. Isso é mais complicado, mas leva você a caminho da simplificação o gerenciamento contínuo de credenciais do gerenciamento de máquinas remotas.
  3. Você pode criar uma unidade mapeada para o compartilhamento remoto com credenciais explícitas usando algo como um recurso de script

Tenha cuidado ao executar o Start-DscConfiguration remoto se tiver configurações adicionais que possam afetar as alterações na rede.
Por exemplo, a criação dos pontos de extremidade do JEA mencionados anteriormente por meio do recurso JustEnoughAdministration pode redefinir o WinRM e interromper prematuramente as chamadas locais e remotas do Start-DscConfiguration que -Wait.

A tarefa agendada é imune a problemas que afetam a rede dentro da Configuração, bem como à simples desorganização de rede de outros fatores do ambiente. O grande truque é se você precisa monitorar a estabilização da configuração, que é um exercício para o leitor (ou uma pergunta / resposta futura).

    
por 14.12.2016 / 07:07