Salinan PowerShell DSC dari jaringan berbagi

17

Saya mencoba menggunakan PowerShell DSC untuk menyalin konten folder dari jaringan berbagi. Ini kodenya:

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

Namun ini tidak berhasil - ketika saya menjalankannya saya mendapatkan pesan kesalahan berikut:

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

Saya mendapatkan hasil yang serupa ketika mencoba menginstal paket dari jaringan berbagi atau mengekstrak arsip dari jaringan berbagi. Saya menjalankan PowerShell 4 pada Windows Server 2008 R2 SP1.

Apakah ada cara untuk menggunakan PowerShell DSC dengan jaringan berbagi?

Richard
sumber
Bukankah solusi yang dijelaskan dalam tautan ini? powershellmagazine.com/2013/09/02/...
ErikE
Terima kasih telah mengarahkan saya ke arah yang benar. Itu tidak membuat saya jauh-jauh ke sana karena bagiannya ada di mesin yang sama dan jadi saya harus memberikan izin ke akun SYSTEM. Jika Anda ingin memberikan jawaban dengan menunjuk tautan itu, saya akan memberi Anda hadiah.
Richard

Jawaban:

14

Manajer Konfigurasi Lokal DSC berjalan sebagai akun SISTEM lokal, bukan akun pengguna Anda. Karena itu ia tidak akan dapat mengakses sumber daya jaringan kecuali diberikan izin eksplisit.

Ada dua kemungkinan situasi. Entah bagiannya ada di mesin yang sama dengan konfigurasi DSC sedang diterapkan (sebut saja mesin ini A) atau bagian itu ada di mesin yang berbeda (sebut saja mesin ini B).

Jika pembagian ada di mesin A, izin BACA perlu diberikan kepada pengguna SISTEM. Sebagai contoh:

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

Jika bagiannya ada di mesin B, izin BACA perlu diberikan ke akun komputer mesin A. Misalnya:

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

Sumber: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/

Richard
sumber
5

The DSCberjalan pada localhostuntuk menerapkan konfigurasi. Ini berarti DSCfile sumber daya perlu didistribusikan ke setiap mesin yang akan dikonfigurasi DSC.

Oleh karena itu manajemen izin sangat penting ketika menyalin file DSC dari share.

DSCberjalan di bawah NT AUTHORITY\SYSTEMakun dan kecuali Credentialatribut telah ditetapkan, Computer accountdigunakan ketika menarik file dari jaringan berbagi.

Oleh karena itu dan tergantung dari mana file tersebut diambil, SYSTEMakun tersebut harus diberikan readizin pada share lokal dan Computer accountkebutuhan untuk diberikan readizin pada share jarak jauh.

Ini secara konkret dirinci dalam jawaban Richards, yang memperluas sintaksis pada sumber blog asli untuk informasi ini.

ErikE
sumber
0

Saya tidak punya waktu saat ini untuk melihat lebih jauh ke dalam ini, tetapi sepertinya mungkin untuk lulus dengan aman kredensial untuk Manajer Konfigurasi Lokal untuk digunakan. Bahkan, dalam posting blog contohnya menggunakan sumber daya File untuk menarik file dari jaringan berbagi. Saya berharap untuk segera mencoba ini, kemudian kembali untuk menyempurnakan jawaban ini.

TechNet Blog: Ingin mengamankan kredensial di Konfigurasi yang Diinginkan State PowerShell Windows? - oleh Travis Plunk

Nathan Hartley
sumber
-2

Powershell hampir sebodoh shell cmd yang lama. Itu masih memiliki dukungan yang sangat terbatas untuk jalur UNC. Dengan mengingat hal itu ... apakah Anda sudah mencoba aliasing jalur UNC? yaitu

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

Dan kemudian merujuk jalan sebagai UNCPath:\SomeFolder. Bersihkan Remove-PSDrivesaat Anda selesai.

Juga, terkadang Anda dapat menentukan FileSystem::\\Server\SomeShare\SomeFoldersebagai path. Saya telah melihat kasus-kasus di mana ini tidak berhasil ... tetapi patut dicoba.

TheCompWiz
sumber
Dalam konteks ini (data konfigurasi) FileSystem::\\Server\SomeShare\SomeFolderjelas merupakan jalan yang harus ditempuh
Mathias R. Jessen
2
Terima kasih atas sarannya tetapi sayangnya menggunakan salah satunya, saya mendapatkan pesan kesalahanRelative path is not supported
Richard