Ağ paylaşımından PowerShell DSC kopyası


17

Bir ağ paylaşımından klasör içeriğini kopyalamak için PowerShell DSC kullanmaya çalışıyorum. İşte kod:

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

Ancak bu çalışmaz - çalıştırdığımda aşağıdaki hata iletisini alıyorum:

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

Ağ paylaşımından bir paket yüklemeye veya ağ paylaşımından arşiv çıkarmaya çalışırken benzer sonuçlar alıyorum. Windows Server 2008 R2 SP1'de PowerShell 4 çalıştırıyorum.

PowerShell DSC'yi ağ paylaşımlarıyla kullanmanın bir yolu var mı?


Bu bağlantıda açıklanan bir çözüm değil mi? powershellmagazine.com/2013/09/02/…
ErikE

Beni doğru yöne yönlendirdiğiniz için teşekkürler. Paylaşım aynı makinede olduğu için beni oraya götürmedi ve bu yüzden SYSTEM hesabına izin vermek zorunda kaldım. Bu bağlantıyı göstererek bir cevap vermek isterseniz, size ödül vereceğim.
Richard

Yanıtlar:


14

DSC Yerel Yapılandırma Yöneticisi, kullanıcı hesabınız olarak değil, yerel SYSTEM hesabı olarak çalışır. Bu nedenle, açık izinler verilmedikçe ağ kaynaklarına erişemez.

İki olası durum vardır. Paylaşım, DSC yapılandırmasının uygulandığı makineyle aynı (bu makineye A diyelim) ya da paylaşım farklı bir makinede (bu makineye B diyelim).

Paylaşım A makinesinde ise, SYSTEM kullanıcısına READ izinlerinin verilmesi gerekir. Örneğin:

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

Paylaşım B makinesindeyse, A makinesinin bilgisayar hesabına READ izinlerinin verilmesi gerekir. Örneğin:

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

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


5

DSCÜzerinde çalışır localhostsırayla yapılandırma uygulamak için. Bu, DSCkaynak dosyalarının yapılandırılacak her makineye dağıtılması gerektiği anlamına gelir DSC.

Bu nedenle DSC dosyalarını bir paylaşımdan kopyalarken izin yönetimi çok önemlidir.

DSCNT AUTHORITY\SYSTEMhesap altında çalışır ve Credentialöznitelik ayarlanmadığı sürece Computer account, dosyalar bir ağ paylaşımından çekilirken kullanılır.

Bu nedenle ve dosyaların nereden alındığına bağlı olarak, SYSTEMhesabın readyerel bir paylaşımda izinler ve uzak bir paylaşımda izinler alınması Computer accountgerekir read.

Bu somut olarak , bu bilgiler için orijinal blog kaynağında sözdizimini akıllıca genişleten Richards cevabında detaylandırılmıştır .


0

Şu anda daha fazla bakmak için vaktim yok, ancak Yerel Yapılandırma Yöneticisi'nin kullanması için kimlik bilgilerini güvenli bir şekilde geçirmek mümkün görünüyor. Aslında, blogunda örneğini gönderen bir ağ paylaşımından dosya çekmek için Dosya kaynağını kullanır. Bunu yakında denemeyi umuyoruz, sonra bu cevabı daha iyi bir şekilde ortaya çıkarmak için geri döneceğim.

TechNet Blog: Windows PowerShell İstenen Durum Yapılandırmasında kimlik bilgilerini güven altına almak ister misiniz? - Travis Plunk tarafından


-2

Powershell neredeyse eski cmd kabuğu kadar aptal. UNC yolları için hala çok sınırlı bir desteği var. Bunu göz önünde bulundurarak ... UNC yolunu taklit etmeyi denediniz mi? yani

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

Ve sonra yola bakın UNCPath:\SomeFolder. İşiniz Remove-PSDrivebittiğinde temizleyin .

Ayrıca, bazen FileSystem::\\Server\SomeShare\SomeFolderyol olarak belirtebilirsiniz . Bunun işe yaramadığı durumlar gördüm ... ama denemeye değer.


Bu bağlamda (yapılandırma verileri) FileSystem::\\Server\SomeShare\SomeFolderkesinlikle gitmek için bir yoldur
Mathias R. Jessen

2
Öneriler için teşekkür ederim ama ne yazık ki ikisini de kullanarak hata mesajı alıyorumRelative path is not supported
Richard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.