PowerShell DSC-Kopie von der Netzwerkfreigabe

17

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?

Richard
quelle
Ist in diesem Link keine Lösung beschrieben? powershellmagazine.com/2013/09/02/…
ErikE
Vielen Dank, dass Sie mich in die richtige Richtung gelenkt haben. Es brachte mich nicht ganz dorthin, da sich die Freigabe auf demselben Computer befand und ich Berechtigungen für das SYSTEM-Konto erteilen musste. Wenn Sie eine Antwort auf diesen Link geben möchten, vergebe ich Ihnen das Kopfgeld.
Richard

Antworten:

14

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:

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

Wenn sich die Freigabe auf Computer B befindet, müssen dem Computerkonto von Computer A Leseberechtigungen erteilt werden. Beispiel:

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

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

Richard
quelle
5

Das DSCläuft weiter localhost, um die Konfiguration zu übernehmen. Dies bedeutet, dass die DSCRessourcendateien auf jeden Computer verteilt werden müssen, über den konfiguriert werden soll DSC.

Die Berechtigungsverwaltung ist daher beim Kopieren der DSC-Dateien von einer Freigabe von entscheidender Bedeutung.

DSCWird unter dem NT AUTHORITY\SYSTEMKonto ausgeführt und wird beim Abrufen der Dateien von einer Netzwerkfreigabe verwendet, sofern das CredentialAttribut nicht festgelegt wurde Computer account.

Abhängig davon, woher die Dateien abgerufen werden, müssen dem SYSTEMKonto readBerechtigungen für eine lokale Freigabe und Berechtigungen für eine Remotefreigabe Computer accounterteilt werden read.

Konkret wird dies in der Richards-Antwort erläutert, die die Syntax der ursprünglichen Blog-Quelle für diese Informationen erweitert.

ErikE
quelle
0

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

Nathan Hartley
quelle
-2

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

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

Und dann bezeichnen wir den Pfad als UNCPath:\SomeFolder. Räumen Sie auf, Remove-PSDrivewenn Sie fertig sind.

Manchmal können Sie auch einen FileSystem::\\Server\SomeShare\SomeFolderPfad angeben . Ich habe Fälle gesehen, in denen dies nicht funktioniert ... aber es ist einen Versuch wert.

TheCompWiz
quelle
In diesem Zusammenhang (Konfigurationsdaten) FileSystem::\\Server\SomeShare\SomeFolderist definitiv der richtige Weg
Mathias R. Jessen
2
Vielen Dank für die Vorschläge, aber leider mit einer von ihnen bekomme ich die FehlermeldungRelative path is not supported
Richard