ネットワーク共有からのPowerShell DSCコピー


17

PowerShell DSCを使用して、フォルダーの内容をネットワーク共有からコピーしようとしています。コードは次のとおりです。

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

ただし、これは機能しません。実行すると、次のエラーメッセージが表示されます。

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

ネットワーク共有からパッケージをインストールするか、ネットワーク共有からアーカイブを抽出しようとすると、同様の結果が得られます。Windows Server 2008 R2 SP1でPowerShell 4を実行しています。

ネットワーク共有でPowerShell DSCを使用する方法はありますか?


ソリューションはこのリンクに記載されていませんか?powershellmagazine.com/2013/09/02/...
ErikE

私を正しい方向に向けてくれてありがとう。共有が同じマシン上にあり、SYSTEMアカウントにアクセス許可を付与する必要があったため、そこまで到達できませんでした。そのリンクを指すように答えを出したい場合、私はあなたに報奨金を授与します。
リチャード14年

回答:


14

DSC Local Configuration Managerは、ユーザーアカウントではなくローカルSYSTEMアカウントとして実行されます。したがって、明示的な許可が与えられない限り、ネットワークリソースにアクセスできません。

2つの状況が考えられます。共有は、DSC構成が適用されているのと同じマシン上にあるか(このマシンAを呼び出しましょう)、別のマシン上にあります(このマシンBを呼び出しましょう)。

共有がマシンAにある場合は、SYSTEMユーザーに読み取り権限を付与する必要があります。例えば:

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

共有がマシンBにある場合、マシンAのコンピューターアカウントに読み取りアクセス許可を付与する必要があります。次に例を示します。

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

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


5

DSC上で実行さlocalhost設定を適用するために。これは、DSCリソースファイルをで設定する各マシンに配布する必要があることを意味しますDSC

したがって、共有からDSCファイルをコピーする場合、権限管理は非常に重要です。

DSCNT AUTHORITY\SYSTEMアカウントの下で実行され、Credential属性が設定されていない限り、Computer accountネットワーク共有からファイルをプルするときに使用されます。

したがって、ファイルのSYSTEM取得元に応じて、アカウントにreadローカル共有のアクセス許可をComputer account付与する必要がありread、リモート共有のアクセス許可を付与する必要があります。

これについては、リチャーズの回答で具体的に詳しく説明されています。この情報では、元のブログソースの構文が賢明に拡張されています。


0

現時点ではこれを詳しく調べる時間はありませんが、Local Configuration Managerが使用する資格情報を安全に渡すことができるようです。実際、ブログの投稿では、彼の例ではFileリソースを使用してネットワーク共有からファイルをプルしています。すぐにこれを試してみてから、この回答をより具体的にするために戻って来たいです。

TechNetブログ:Windows PowerShell Desired State Configurationで資格情報を保護したいですか?-トラビス・プランク


-2

Powershellは、古いcmdシェルと同じくらい愚かです。UNCパスのサポートはまだ非常に限られています。それを念頭に置いて... UNCパスのエイリアスを作成しようとしましたか?すなわち

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

そして、パスをとして参照しますUNCPath:\SomeFolderRemove-PSDrive完了したらクリーンアップします。

また、FileSystem::\\Server\SomeShare\SomeFolderパスとして指定できる場合もあります。私はこれがうまくいかないケースを見てきました...しかし、それは一見の価値があります。


このコンテキスト(設定データ)FileSystem::\\Server\SomeShare\SomeFolderで間違いなく行く方法です
マティアスR.ジェッセン14年

2
提案をありがとうございますが、残念ながらそれらのいずれかを使用すると、エラーメッセージが表示されますRelative path is not supported
リチャード14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.