Próbuję użyć programu PowerShell DSC do skopiowania zawartości folderu z udziału sieciowego. Oto kod:
Configuration TestSetup {
Node localhost {
File Test {
SourcePath = "\\Server\SomeShare\SomeFolder"
DestinationPath = "E:\test"
Recurse = $true
Type = "Directory"
}
}
}
To jednak nie działa - po uruchomieniu pojawia się następujący komunikat o błędzie:
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
Podobne wyniki uzyskuję, próbując zainstalować pakiet z udziału sieciowego lub wyodrębnić archiwum z udziału sieciowego. Korzystam z programu PowerShell 4 w systemie Windows Server 2008 R2 z dodatkiem SP1.
Czy istnieje sposób używania PowerShell DSC z udziałami sieciowymi?
windows
powershell
network-share
dsc
Richard
źródło
źródło
Odpowiedzi:
Menedżer konfiguracji lokalnej DSC działa jako lokalne konto SYSTEM, a nie konto użytkownika. Dlatego nie będzie mógł uzyskać dostępu do zasobów sieciowych, chyba że otrzyma wyraźne uprawnienia.
Istnieją dwie możliwe sytuacje. Albo udział znajduje się na tym samym komputerze, na którym stosowana jest konfiguracja DSC (nazwijmy ten komputer A), albo udział znajduje się na innym komputerze (nazwijmy ten komputer B).
Jeśli udział znajduje się na komputerze A, użytkownik SYSTEM musi uzyskać uprawnienia do odczytu. Na przykład:
Jeśli udział znajduje się na komputerze B, uprawnienia do odczytu należy udzielić na koncie komputera na komputerze A. Na przykład:
Źródło: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/
źródło
Że
DSC
biegnie onlocalhost
w celu zastosować konfigurację. Oznacza to, żeDSC
pliki zasobów muszą być rozpowszechniane na każdym komputerze, za pomocą którego ma zostać skonfigurowanyDSC
.Zarządzanie uprawnieniami ma zatem kluczowe znaczenie podczas kopiowania plików DSC z udziału.
DSC
działa podNT AUTHORITY\SYSTEM
kontem i jeśli tenCredential
atrybut nie został ustawiony,Computer account
jest używany podczas pobierania plików z udziału sieciowego.Dlatego w zależności od tego, gdzie pliki są ściągane od,
SYSTEM
potrzeba konta zostać przyznaneread
uprawnienia lokalnego udziału iComputer account
konieczności zostać przyznaneread
uprawnienia na zdalnym akcję.Jest to konkretnie szczegółowo opisane w odpowiedzi Richardsa, która rozwija oryginalną składnię oryginalnych blogów dla tych informacji.
źródło
W tej chwili nie mam czasu, aby przyjrzeć się temu bliżej, ale wygląda na to, że można bezpiecznie przekazać poświadczenia do użycia przez lokalnego menedżera konfiguracji. W blogu jego przykład wykorzystuje zasób Plik do pobierania plików z udziału sieciowego. Mam nadzieję, że wkrótce to wypróbuję, a potem wrócę, by lepiej poznać tę odpowiedź.
Blog TechNet: Chcesz zabezpieczyć poświadczenia w konfiguracji żądanego stanu Windows PowerShell? - autor: Travis Plunk
źródło
Powershell jest prawie tak głupi jak stara powłoka cmd. Nadal ma bardzo ograniczone wsparcie dla ścieżek UNC. Mając to na uwadze ... próbowałeś aliować ścieżkę UNC? to znaczy
A następnie określ ścieżkę jako
UNCPath:\SomeFolder
. PorządkowanieRemove-PSDrive
po zakończeniu.Czasami można również określić
FileSystem::\\Server\SomeShare\SomeFolder
jako ścieżkę. Widziałem przypadki, w których to nie działa ... ale warto spróbować.źródło
FileSystem::\\Server\SomeShare\SomeFolder
jest zdecydowanie najlepsza drogaRelative path is not supported