Копія DSC PowerShell з мережевої частки


17

Я намагаюся використовувати PowerShell DSC для копіювання вмісту папок із загальної мережі. Ось код:

Configuration TestSetup {
    Node localhost {
        File Test {
            SourcePath = "\\Server\SomeShare\SomeFolder"
            DestinationPath = "E:\test"
            Recurse = $true
            Type = "Directory"
        }
    }
}

Однак це не працює - коли я запускаю, я отримую таке повідомлення про помилку:

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

Я отримую подібні результати, коли намагаюся встановити пакет із загальної мережі або витягнути архів із мережевої папки. Я запускаю PowerShell 4 на Windows Server 2008 R2 SP1.

Чи є спосіб використовувати PowerShell DSC з мережевими частками?


Чи не рішення, описане в цьому посиланні? powershellmagazine.com/2013/09/02/…
ErikE

Дякую, що вказали на мене в правильному напрямку. Мені це було не зовсім до речі, тому що частка була на одній машині, і тому мені довелося надати дозволи на рахунок SYSTEM. Якщо ви хочете поставити відповідь, вказуючи на це посилання, я присуджую вам нагороду.
Річард

Відповіді:


14

DSC Local Configuration Manager працює як локальний акаунт SYSTEM, а не ваш обліковий запис користувача. Тому він не зможе отримати доступ до мережевих ресурсів, якщо не буде надано явних дозволів.

Можливі дві ситуації. Або поділка знаходиться на тій же машині, до якої застосовується конфігурація DSC (назвемо цю машину A), або поділка знаходиться на іншій машині (назвемо цю машину B).

Якщо частка знаходиться на машині A, користувачеві СИСТЕМИ потрібно надати дозволи READ. Наприклад:

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

Якщо частка знаходиться на машині B, дозволу READ потрібно надати на комп'ютерний рахунок машини A. Наприклад:

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

Джерело: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/


5

У DSCпробіги на localhostдля того , щоб застосувати конфігурацію. Це означає, що DSCфайли ресурсів потрібно поширювати на кожній машині, через яку потрібно налаштувати DSC.

Тому управління дозволами є вирішальним при копіюванні DSC-файлів із загальної частини.

DSCпрацює під NT AUTHORITY\SYSTEMобліковим записом, і якщо Credentialатрибут не встановлено, то Computer accountвикористовується під час витягування файлів із мережевої папки.

Тому і залежно від того, звідки витягнуті файли, SYSTEMобліковому запису потрібно надати readдозволи на локальну спільну доступність та Computer accountпотребувати readдозволів на віддалену спільну спільну доступність .

Це конкретно детально описано у відповіді Річардса, який розширює синтаксис у первісному джерелі блогу для цієї інформації.


0

На даний момент у мене немає часу для подальшого вивчення цього питання, але, схоже, можна надійно передавати облікові дані для локального менеджера конфігурації. Насправді в блозі, який розміщує його приклад, використовується ресурс «Файл» для витягування файлів із мережевої папки. Я сподіваюся, що спробую це скоріше, а потім поверніться, щоб краще зрозуміти цю відповідь.

Блог TechNet: Хочете захистити облікові дані в налаштуваннях бажаного стану Windows PowerShell? - Тревіс Плунк


-2

Powershell майже такий самий німий, як і стара оболонка cmd. Він все ще має дуже обмежену підтримку шляхів ООН. Зважаючи на це ... Ви спробували згладити шлях UNC? тобто

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

А потім посилайтесь на шлях як UNCPath:\SomeFolder. Почистіть, Remove-PSDriveколи закінчите.

Також іноді ви можете вказати FileSystem::\\Server\SomeShare\SomeFolderяк шлях. Я бачив випадки, коли це не працює ... але це варто зняти.


У цьому контексті (конфігураційні дані) FileSystem::\\Server\SomeShare\SomeFolder, безумовно, шлях
Матіас Р. Єссен

2
Дякую за пропозиції, але, на жаль, використовуючи будь-яку з них, я отримую повідомлення про помилкуRelative path is not supported
Річард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.