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를 사용하는 방법이 있습니까?
답변
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
답변
DSC
에서 실행 localhost
순서로 구성을 적용합니다. 이는 DSC
리소스 파일을 통해 구성 할 각 시스템에 리소스 파일을 배포해야 함을 의미합니다 DSC
.
따라서 공유에서 DSC 파일을 복사 할 때 권한 관리가 중요합니다.
DSC
NT AUTHORITY\SYSTEM
계정에서 실행되며 Credential
속성이 설정되어 있지 않으면 Computer account
네트워크 공유에서 파일을 가져올 때이 속성 이 사용됩니다.
따라서 파일을 가져온 위치에 따라 SYSTEM
계정 read
에 로컬 공유에 Computer account
대한 read
권한 이 부여 되고 원격 공유에 대한 권한 이 부여되어야합니다 .
이것은 Richards 답변에 구체적으로 자세히 나와 있으며, 이 정보 에 대한 원본 블로그 소스 에서 구문을 현명하게 확장합니다 .
답변
지금은 더 이상 살펴볼 시간이 없지만 로컬 구성 관리자가 사용할 자격 증명을 안전하게 전달할 수있는 것처럼 보입니다. 실제로 블로그 게시에서 그의 예제는 File 리소스를 사용하여 네트워크 공유에서 파일을 가져옵니다. 나는 이것을 빨리 시도한 다음이 대답을 더 잘 살리기 위해 돌아 오기를 바랍니다.
TechNet 블로그 : Windows PowerShell 원하는 상태 구성에서 자격 증명을 보호 하시겠습니까? -Travis Plunk 작성
답변
Powershell은 이전 cmd 쉘과 거의 비슷합니다. UNC 경로에 대한 지원은 여전히 매우 제한적입니다. 이를 염두에두고 … UNC 경로의 앨리어싱을 시도 했습니까? 즉
New-PSDrive -Name UNCPath -PSProvider FileSystem -Root \\Server\SomeShare\
그런 다음 경로를로 참조하십시오 UNCPath:\SomeFolder
. Remove-PSDrive
완료되면 정리하십시오 .
또한 FileSystem::\\Server\SomeShare\SomeFolder
경로로 지정할 수도 있습니다 . 이것이 작동하지 않는 경우를 보았습니다 …하지만 가치가 있습니다.