Назад | Перейти на главную страницу

Копирование файла Powershell DSC - машины для рабочих групп

У меня есть машина, на которую мне нужно скопировать файлы из общего сетевого ресурса (в домене) для развертывания с машины вне домена.

В настоящее время у меня есть следующий код;

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"

Я запускаю его и могу сгенерировать файл MOF, и это нормально.

Я получаю следующую ошибку:

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

Кажется, сеанс CIM настроен нормально.

PS C:\dsc> Get-CimSession


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

Он был создан с помощью следующего кода;

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

И ему были переданы учетные данные для пользователя, который является локальным администратором на компьютере рабочей группы и является локальным пользователем на компьютере домена, с которого он пытается получить файлы.

Если я попробую еще один тест, создав сеанс PSSession и попытаюсь скопировать файлы, он будет работать нормально, и я увижу, что файлы появляются на компьютере рабочей группы.

$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'}

Проблема в том, что Start-DscConfiguration, похоже, не поддерживает PSSessions, только CIMSessions.

Итак, есть какие-нибудь указания на то, что попробовать дальше? Я думаю, что моя CIMsession настроена правильно, и я думаю, что у меня есть все необходимые настройки на файловом ресурсе, машине рабочей группы, все настроено правильно, поскольку PSSession работает нормально.

Привет, Энди

Обычно я подхожу к такой проблеме одним из трех способов:

  1. Создайте запланированную задачу на удаленном компьютере с явными учетными данными, чтобы выполнить Start-DscConfiguration локально. Он будет работать точно как локальный пользователь для следующего перехода в удаленном взаимодействии.
  2. Рассмотрите возможность создания и использования конечной точки JEA. Это более сложно, но направляет вас к упрощению текущего управления учетными данными для управления удаленными машинами.
  3. Вы можете создать подключенный диск к удаленному общему ресурсу с явными кредитами, используя что-то вроде ресурса Script

Остерегайтесь выполнения удаленного Start-DscConfiguration, если у вас есть дополнительные конфигурации, которые могут влиять на сеть.
Например, создание ранее упомянутых конечных точек JEA через ресурс JustEnoughAdministration может сбросить WinRM и преждевременно прервать как локальные, так и удаленные вызовы Start-DscConfiguration, которые -Wait.

Запланированная задача невосприимчива как к проблемам, влияющим на сеть в Конфигурации, так и к простой нестабильности сети из-за других факторов среды. Большой трюк заключается в том, что вам нужно затем следить за стабилизацией конфигурации, что является упражнением для читателя (или будущим вопросом / ответом).