네트워크 공유의 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 계정에 권한을 부여해야했습니다. 해당 링크를 가리키는 답변을 원하면 현상금을 수여합니다.
Richard

답변:


14

DSC Local Configuration Manager는 사용자 계정이 아닌 로컬 SYSTEM 계정으로 실행됩니다. 따라서 명시적인 권한이 없으면 네트워크 리소스에 액세스 할 수 없습니다.

두 가지 가능한 상황이 있습니다. DSC 구성을 적용 할 때 (이 시스템 A라고 부름) 공유가 다른 시스템 (이 기계 B라고 함)과 동일한 시스템에 있습니다.

공유가 시스템 A에있는 경우 SYSTEM 사용자에게 READ 권한이 부여되어야합니다. 예를 들면 다음과 같습니다.

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

공유가 시스템 B에있는 경우 시스템 A의 컴퓨터 계정에 READ 권한이 부여되어야합니다. 예를 들면 다음과 같습니다.

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권한 이 부여 되고 원격 공유에 대한 권한 이 부여되어야합니다 .

이것은 Richards 답변에 구체적으로 자세히 나와 있으며, 이 정보 에 대한 원본 블로그 소스 에서 구문을 현명하게 확장합니다 .


0

지금은 더 이상 살펴볼 시간이 없지만 로컬 구성 관리자가 사용할 자격 증명을 안전하게 전달할 수있는 것처럼 보입니다. 실제로 블로그 게시에서 그의 예제는 File 리소스를 사용하여 네트워크 공유에서 파일을 가져옵니다. 나는 이것을 빨리 시도한 다음이 대답을 더 잘 살리기 위해 돌아 오기를 바랍니다.

TechNet 블로그 : Windows PowerShell 원하는 상태 구성에서 자격 증명을 보호 하시겠습니까? -Travis Plunk 작성


-2

Powershell은 이전 cmd 쉘과 거의 비슷합니다. UNC 경로에 대한 지원은 여전히 ​​매우 제한적입니다. 이를 염두에두고 ... UNC 경로의 앨리어싱을 시도 했습니까? 즉

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

그런 다음 경로를로 참조하십시오 UNCPath:\SomeFolder. Remove-PSDrive완료되면 정리하십시오 .

또한 FileSystem::\\Server\SomeShare\SomeFolder경로로 지정할 수도 있습니다 . 이것이 작동하지 않는 경우를 보았습니다 ...하지만 가치가 있습니다.


이러한 맥락에서 (구성 데이터) FileSystem::\\Server\SomeShare\SomeFolder는 확실히 갈 길입니다
Mathias R. Jessen

2
제안에 감사하지만 불행히도 그 중 하나를 사용하면 오류 메시지가 나타납니다Relative path is not supported
Richard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.