web-dev-qa-db-ja.com

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

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を使用する方法はありますか?

17
Richard

DSCローカル構成マネージャーは、ユーザーアカウントではなく、ローカルのSYSTEMアカウントとして実行されます。したがって、明示的な権限が付与されていない限り、ネットワークリソースにアクセスできません。

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

共有がマシンAにある場合、READ権限を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/

14
Richard

DSCは、設定を適用するためにlocalhostで実行されます。つまり、DSCリソースファイルは、DSCを介して構成する各マシンに配布する必要があります。

したがって、共有からDSCファイルをコピーする場合は、アクセス許可の管理が重要です。

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

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

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

5
ErikE

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

TechNetブログ: Windows PowerShellの望ましい状態の構成で資格情報をセキュリティで保護したいですか? -Travis Plunk

0
Nathan Hartley