2014-12-31 4 views
6

PowerShell을 사용하여 로컬 컴퓨터에서 원격 컴퓨터로 파일을 복사해야합니다. 다음 명령을 사용하여 파일을 원격 컴퓨터에 복사 할 수 있습니다.원격 컴퓨터의 파일을 복사하는 PowerShell 명령

copy-item -Path d:\Shared\test.txt -Destination \\server1\Shared 

위의 명령은 네트워크 공유 경로를 사용하여 파일을 복사합니다. 폴더가 원격 컴퓨터에서 공유되지 않으므로 네트워크 공유 옵션을 사용하고 싶지 않습니다. 다음 명령을 시도했지만 작동하지 않았습니다.

copy-item -Path d:\Shared\test.txt -Destination \\server1\c$\Shared 

Invoke-Command -ComputerName \\server -ScriptBlock { 
    copy-item -Path D:\Shared\test.txt -Destination C:\Shared 
} 

UNC 경로를 사용하지 않고 작동시키는 방법을 알려주십시오. 원격 컴퓨터의 해당 폴더에 대한 모든 권한을가집니다.

+2

"작동하지 않음"이란 정확히 무엇을 의미합니까? 오류 메시지가 나타 났습니까? 파일이 전혀 복사되지 않았습니까? 파일이 잘못된 위치에 복사 되었습니까? 잘못된 파일이 정확한 위치에 복사 되었습니까? 다른 일이 생겼어? – vonPryz

+2

또한 Invoke 명령을 실행할 때 경로는 실행중인 서버와 관련이 있으므로'D : \ Shared \ test.txt'는 UNC 경로 여야합니다. – Matt

+0

"네트워크 경로를 찾을 수 없습니다"오류가 발생합니다. –

답변

4

파일을 푸시하려는 경우 원격 호스트에서 중, 한 호스트에서 다른 호스트로 파일을 복사 할 수있는 공유 폴더가 있어야합니다

Copy-Item -Path D:\folder\test.txt -Destination \\server1\remoteshare\ 

또는 원하는 경우 로컬 호스트에

계정이 특정 컴퓨터에 대한 관리자 권한이있는 경우에만 사용할 수 있습니다

Invoke-Command -ComputerName server1 -ScriptBlock { 
    Copy-Item -Path \\localcomputer\localshare\test.txt -Destination C:\Shared\ 
} 

관리 공유 (\\server1\c$) : 파일을 당깁니다. 계정을 사용하고 있기 때문에, 관리자, 나는이에 발견

Invoke-Command -ComputerName \\server -ScriptBlock { 
    $args[0] | Set-Content C:\Shared\test.txt 
    } -ArgumentList (Get-Content D:\Shared\test.txt -Raw) 
+0

원격 컴퓨터 및 \\ server1 \ c $에 대한 관리자 권한이 있습니다. 작동하지 않습니다. "네트워크 경로를 찾을 수 없습니다"라는 오류 메시지가 나타납니다. –

+1

@ParveenKumar server1의 Windows 방화벽에서 SMB 연결을 허용합니까? server1에서 445 번 포트로 telnet 할 수 있습니까? –

3

, 당신은 스크립트 파일 내용 자체가 논쟁을해야합니다 다음을 수행하는 것입니다.

New-PSDrive -Name X -PSProvider FileSystem -Root \\MyRemoteServer\c$\My\Folder\Somewhere\ 
cd X:\ 
cp ~\Desktop\MyFile.txt .\ 
## Important, need to exit out of X:\ for unmouting share 
cd c:\ 
Remove-PSDrive X 

매번 작동합니다.

+1

'Get-Content'와 함께'-Raw' 만 사용하면 텍스트 파일에 적합합니다. 바이너리 파일의 경우,'-Encoding Byte -ReadCount 0 -Raw'를 사용하십시오. 또는 [ReadAllBytes/WriteAllBytes] (http://stackoverflow.com/a/17542292/145173)를 사용하십시오. –

5

빠른 방법 : 접근 가능한 공유가없는 경우

+2

X : \ 디렉토리를 변경하기 위해'Push-Location'과'Pop-Location'을 사용하는 것이 좋습니다. 이렇게하면 코드가 실행 된 후 현재 디렉토리가 수정되지 않고 그대로 유지되어 함수 또는 유사한 위치에 배치하는 것이 더 간단 해집니다. – jpmc26

1
Invoke-Command -ComputerName compname -Credential $cred -ScriptBlock { Get-Content C:\myfolder\result.txt } >>res.txt 

참고 C : \ MyFolder에 \의 Result.txt 원격 컴퓨터

0

에 여기 작은 파일을 나를 위해 일한 스크립트입니다. 관리자 권한으로 실행하십시오.

#pre 5.0 powershell copy-item to remote computer 
Write-Host "Remote copy a file" 
$servers = @("server01.dot.com", "server02.dot.com") 
foreach($server in $servers) { 
$username = 'USERNAME' 
$password = 'PASSWORD' 
$pw = ConvertTo-SecureString $password -AsPlainText -Force 
$cred = New-Object Management.Automation.PSCredential ($username, $pw) 
$myfile = [System.IO.File]::ReadAllBytes("C:\Temp\srctest.txt") 
$s = New-PSSession -computerName $server -credential $cred 
Enter-PSSession $s 
Invoke-Command -Session $s -ArgumentList $myfile -Scriptblock {[System.IO.File]::WriteAllBytes("C:\Temp\desttest.txt", $args)} 
Write-Host "Completed" 
Remove-PSSession $s 
} 
관련 문제