J'essaie d'utiliser PowerShell DSC pour copier le contenu du dossier à partir d'un partage réseau. Voici le code:
Configuration TestSetup {
Node localhost {
File Test {
SourcePath = "\\Server\SomeShare\SomeFolder"
DestinationPath = "E:\test"
Recurse = $true
Type = "Directory"
}
}
}
Cela ne fonctionne pas cependant - lorsque je l'exécute, j'obtiens le message d'erreur suivant:
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
J'obtiens des résultats similaires lorsque j'essaie d'installer un package à partir d'un partage réseau ou d'extraire une archive à partir d'un partage réseau. J'exécute PowerShell 4 sur Windows Server 2008 R2 SP1.
Existe-t-il un moyen d'utiliser PowerShell DSC avec des partages réseau?
windows
powershell
network-share
dsc
Richard
la source
la source
Réponses:
Le DSC Local Configuration Manager s'exécute en tant que compte SYSTEM local, pas votre compte utilisateur. Il ne pourra donc pas accéder aux ressources du réseau à moins de disposer d'autorisations explicites.
Il y a deux situations possibles. Soit le partage se trouve sur la même machine que celle à laquelle la configuration DSC est appliquée (appelons cette machine A), soit le partage se trouve sur une autre machine (appelons cette machine B).
Si le partage se trouve sur la machine A, les autorisations de lecture doivent être accordées à l'utilisateur SYSTEM. Par exemple:
Si le partage se trouve sur la machine B, les autorisations de lecture doivent être accordées au compte d'ordinateur de la machine A. Par exemple:
Source: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/
la source
Le
DSC
s'exécutelocalhost
afin d'appliquer la configuration. Cela signifie que lesDSC
fichiers de ressources doivent être distribués sur chaque machine à configurerDSC
.La gestion des autorisations est donc cruciale lors de la copie des fichiers DSC à partir d'un partage.
DSC
s'exécute sous leNT AUTHORITY\SYSTEM
compte et sauf si l'Credential
attribut a été défini, leComputer account
est utilisé lors de l'extraction des fichiers d'un partage réseau.Par conséquent et selon d'où les fichiers sont extraits, le
SYSTEM
compte doit se voir accorder desread
autorisations sur un partage local et laComputer account
nécessité de se voir accorder desread
autorisations sur un partage distant.Ceci est concrètement détaillé dans la réponse de Richards, qui étend la syntaxe sur la source du blog d'origine pour cette information.
la source
Je n'ai pas le temps pour le moment d'approfondir cette question, mais il semble qu'il soit possible de transmettre en toute sécurité les informations d'identification à utiliser par le gestionnaire de configuration local. En fait, dans le blog, son exemple utilise la ressource File pour extraire des fichiers d'un partage réseau. J'espère essayer cela bientôt, puis revenir pour mieux étoffer cette réponse.
Blog TechNet: vous souhaitez sécuriser les informations d'identification dans la configuration de l'état souhaité de Windows PowerShell? - par Travis Plunk
la source
Powershell est presque aussi stupide que l'ancien shell cmd. Il a toujours un support très limité pour les chemins UNC. Dans cet esprit ... avez-vous essayé d'aliaser le chemin UNC? c'est à dire
Et puis se référer au chemin comme
UNCPath:\SomeFolder
. NettoyezRemove-PSDrive
quand vous avez terminé.De plus, vous pouvez parfois spécifier
FileSystem::\\Server\SomeShare\SomeFolder
comme chemin. J'ai vu des cas où cela ne fonctionne pas ... mais ça vaut le coup.la source
FileSystem::\\Server\SomeShare\SomeFolder
est définitivement la voie à suivreRelative path is not supported