2014-07-23 2 views
1

클라이언트와 서버가 있습니다. 클라이언트는 같은 스크립트를 호출합니다 :Powershell Server 네트워크 드라이브

cmd.exe /C copy "\\server\file1.pdf" "\\server2\file1.pdf" 

어떻게 수행하십시오 jclbuild2.bat 실행하고 \\otherserver\something 같은 네트워크 드라이브에 액세스 할 서버에

#Predefine necessary information 
$Username = "Niels" 
$Password = "password" 
$ComputerName = "192.168.1.51" 
$Script = {powershell c:/build/jclbuild2.bat} 

#Create credential object 
$SecurePassWord = ConvertTo-SecureString -AsPlainText $Password -Force 
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $Username, $SecurePassWord 

#Create session object with this 
$Session = New-PSSession -ComputerName $ComputerName -credential $Cred 

#Invoke-Command 
$Job = Invoke-Command -Session $Session -Scriptblock $Script 
echo $Job 

#Close Session 
Remove-PSSession -Session $Session 

를, 내가이 명령을 수행 할 경우 액세스가 거부 말한다 원격 서버의 powershell 파일에서 네트워크 드라이브에 액세스합니까? $ username 및 $ password와 함께 사용하는 사용자는 네트워크 드라이브에 액세스 할 수 있어야합니다.

저는 이중 홉 문제라고 생각합니다. 해결 방법을 모르겠습니다.

답변

2

기본 인증 메커니즘을 사용하여이 작업을 수행 할 수 없습니다. ID만이 아닌 자격 증명을 전달할 수있는 인증 메커니즘을 사용해야합니다. Kerberos는이 중 하나입니다. CredSSP는 Vista/Server 2008 이후부터 Windows에 내장 된 또 다른 프로그램입니다.

저는 CredSSP를 설정 한 경험이 있습니다. 대상 컴퓨터에서 자격 증명을 일반 텍스트로 액세스 할 수 있으므로 보안 위험이 있습니다.

두 개의 명령 (둘 다 상승 된 셸에서 실행)을 실행해야합니다. 하나는 컴퓨터에서 위의 스크립트 (클라이언트)를 실행하고 다른 하나는 원격 (서버)을 통해 연결할 대상에 있습니다.

이렇게하면 $ ComputerName에 클라이언트에서 위임 할 수 있습니다 (FQDN을 사용해야 할 수도 있음). 보안상의 이유로 '*'은 사용하지 않아야하지만 '*.mydomain.int'을 사용하여 도메인의 모든 컴퓨터에 위임 할 수 있습니다. 세션을 만들 때 대상 서버

Enable-WSManCredSSP -Role Server 

는 다음의 CredSSP 설정에 ServerFault에 대한 질문이 있습니다

$Session = New-PSSession -ComputerName $ComputerName -credential $Cred -Authentication Credssp 

- 인증 플래그를 사용합니다. 추가 설명이있는 블로그 게시물 here도 있습니다. 이 post에는 일반적으로 발생하는 몇 가지 오류 메시지에 대한 문제 해결 정보가 있습니다.

+0

일부 WSMAN 오류가 발생합니다. targetcomputer의 ID는 WSMAN-servce로 확인할 수 없습니다. – Niels

+0

@Niels 어떤 명령이 실패 했습니까? 추가 정보는 [this] (http://dustinhatch.tumblr.com/post/24589312635/enable-powershell-remoting-with-credssp-using-group)를 참조하십시오. 내가 이것을 설정할 때 FQDN과 논쟁이 많이 일어나는 것을 기억합니다. 세션을 만들 때 FQDN을 사용해야 할 수도 있습니다. –

+0

나는 그것을 고쳤다. 나는'-Authentication'을 추가 할 때 이상한 오류를 겪었고 스크립트를 간소화 시켰습니다. 감사 ! – Niels

0

또 다른 옵션은 서버에서 위임 된 세션을 사용하는 것입니다.

기본적으로 -RunAs 매개 변수를 사용하여 세션이 실행될 자격 증명을 지정하는 사용자 지정 원격 세션을 만듭니다. 또한 세션에서 실행할 수있는 스크립트와 cmdlet을 제한하고 세션에 연결할 수있는 사용자를 지정할 수 있습니다.

이 경우 세션은 Niels 계정으로 실행되며 세션에 연결된 모든 사람이 세션에 연결된 사람과 관계없이 해당 계정 권한하에있게됩니다. 이 세션에서 이제 CredSSP를 사용하지 않고도 다른 서버로 한 번 이동할 수 있습니다.

이렇게하면 계정 암호를 클라이언트 컴퓨터의 스크립트 파일에 저장하는 데 따른 보안 위험이 없습니다.

http://blogs.technet.com/b/heyscriptingguy/archive/2014/04/03/use-delegated-administration-and-proxy-functions.aspx

관련 문제