Ich versuche, mit PowerShell DSC Ordnerinhalte von einer Netzwerkfreigabe zu kopieren. Hier ist der Code:
Configuration TestSetup {
Node localhost {
File Test {
SourcePath = "\\Server\SomeShare\SomeFolder"
DestinationPath = "E:\test"
Recurse = $true
Type = "Directory"
}
}
}
Dies funktioniert jedoch nicht - wenn ich es ausführe, wird folgende Fehlermeldung angezeigt:
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
Ich erhalte ähnliche Ergebnisse, wenn ich versuche, ein Paket von einer Netzwerkfreigabe zu installieren oder ein Archiv von einer Netzwerkfreigabe zu extrahieren. Ich führe PowerShell 4 unter Windows Server 2008 R2 SP1 aus.
Gibt es eine Möglichkeit, PowerShell DSC mit Netzwerkfreigaben zu verwenden?
windows
powershell
network-share
dsc
Richard
quelle
quelle
Antworten:
Der lokale DSC-Konfigurationsmanager wird als lokales SYSTEM-Konto ausgeführt, nicht als Ihr Benutzerkonto. Es ist daher nicht möglich, auf Netzwerkressourcen zuzugreifen, wenn ihm keine expliziten Berechtigungen erteilt werden.
Es gibt zwei mögliche Situationen. Entweder befindet sich die Freigabe auf demselben Computer, auf den die DSC-Konfiguration angewendet wird (nennen wir diesen Computer A), oder die Freigabe befindet sich auf einem anderen Computer (nennen wir diesen Computer B).
Wenn sich die Freigabe auf Computer A befindet, müssen dem SYSTEM-Benutzer Leseberechtigungen erteilt werden. Beispielsweise:
Wenn sich die Freigabe auf Computer B befindet, müssen dem Computerkonto von Computer A Leseberechtigungen erteilt werden. Beispiel:
Quelle: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/
quelle
Das
DSC
läuft weiterlocalhost
, um die Konfiguration zu übernehmen. Dies bedeutet, dass dieDSC
Ressourcendateien auf jeden Computer verteilt werden müssen, über den konfiguriert werden sollDSC
.Die Berechtigungsverwaltung ist daher beim Kopieren der DSC-Dateien von einer Freigabe von entscheidender Bedeutung.
DSC
Wird unter demNT AUTHORITY\SYSTEM
Konto ausgeführt und wird beim Abrufen der Dateien von einer Netzwerkfreigabe verwendet, sofern dasCredential
Attribut nicht festgelegt wurdeComputer account
.Abhängig davon, woher die Dateien abgerufen werden, müssen dem
SYSTEM
Kontoread
Berechtigungen für eine lokale Freigabe und Berechtigungen für eine RemotefreigabeComputer account
erteilt werdenread
.Konkret wird dies in der Richards-Antwort erläutert, die die Syntax der ursprünglichen Blog-Quelle für diese Informationen erweitert.
quelle
Ich habe im Moment keine Zeit, um näher darauf einzugehen, aber es sieht so aus, als ob es möglich ist, Anmeldeinformationen sicher zu übergeben, damit der Local Configuration Manager sie verwenden kann. Tatsächlich verwendet sein Beispiel in der Blog-Veröffentlichung die Dateiressource, um Dateien von einer Netzwerkfreigabe abzurufen. Ich hoffe, dass ich das bald ausprobieren kann und dann zurückkomme, um diese Antwort besser zu konkretisieren.
TechNet-Blog: Möchten Sie Anmeldeinformationen in der Windows PowerShell-Konfiguration für den gewünschten Status sichern? - durch Travis Plunk
quelle
Powershell ist fast so dumm wie die alte Cmd-Shell. Die Unterstützung für UNC-Pfade ist immer noch sehr begrenzt. In diesem Sinne ... haben Sie versucht, den UNC-Pfad zu verfälschen? dh
Und dann bezeichnen wir den Pfad als
UNCPath:\SomeFolder
. Räumen Sie auf,Remove-PSDrive
wenn Sie fertig sind.Manchmal können Sie auch einen
FileSystem::\\Server\SomeShare\SomeFolder
Pfad angeben . Ich habe Fälle gesehen, in denen dies nicht funktioniert ... aber es ist einen Versuch wert.quelle
FileSystem::\\Server\SomeShare\SomeFolder
ist definitiv der richtige WegRelative path is not supported