itsource

PowerShell로 원격으로 파일 복사

mycopycode 2023. 5. 12. 22:16
반응형

PowerShell로 원격으로 파일 복사

서버 A에서 실행하고 싶은 PowerShell 스크립트를 작성하고 있습니다.서버 B에 연결하여 서버 A에 파일을 백업으로 복사하려고 합니다.

그렇게 할 수 없다면 서버 A에서 서버 B로 연결하여 서버 B의 다른 디렉터리에 파일을 복사하고 싶습니다.

명령은 표시되지만 컴퓨터 이름을 지정하는 방법은 표시되지 않습니다.

나는 내가 할 수 있다고 생각했을 것입니다.

Copy-Item -ComputerName ServerB -Path C:\Programs\temp\test.txt -Destination (not sure how it would know to use ServerB or ServerA)

어떻게 해야 하나요?

PowerShell 버전 5 이상(윈도우즈 서버 2016에 포함, 이전 버전의 경우 WMF 5의 일부로 다운로드 가능)에서는 원격으로 이 작업이 가능합니다.이 기능의 이점은 어떤 이유로든 공유에 액세스할 수 없는 경우에도 작동한다는 것입니다.

이렇게 하려면 복사가 시작되는 로컬 세션에 PowerShell 5 이상이 설치되어 있어야 합니다.원격 세션은 PowerShell 5를 설치할 필요가 없습니다. PowerShell 버전이 2 이하이고 윈도우즈 서버 버전이 2008 R2 [1]이하입니다.

서버 A에서 서버 B에 대한 세션을 만듭니다.

$b = New-PSSession B

그리고 여전히 A:

Copy-Item -FromSession $b C:\Programs\temp\test.txt -Destination C:\Programs\temp\test.txt

항목을 B로 복사하는 작업은 다음과 같이 수행됩니다.-ToSession로컬 경로는 두 경우 모두 사용됩니다. 현재 서버를 추적해야 합니다.


: PowerShell 2만 있는 원격 서버에서 또는 원격 서버로 복사할 때 PowerShell 5.1의 버그에 주의하십시오. 이 버그는 쓰기 시 재귀 파일 복사가 작동하지 않음을 의미합니다.-ToSession겉보기에는 복사가 전혀 작동하지 않습니다.-FromSession.

관리 공유를 사용하여 시스템 간에 파일을 복사하기만 하면 됩니다.이렇게 하는 것이 훨씬 쉽습니다.

Copy-Item -Path \\serverb\c$\programs\temp\test.txt -Destination \\servera\c$\programs\temp\test.txt;

로컬 파일 시스템 경로 대신 UNC 경로를 사용하면 이러한 UNC 경로에 액세스할 수 있는 모든 클라이언트 시스템에서 스크립트를 실행할 수 있습니다.로컬 파일 시스템 경로를 사용하는 경우 특정 컴퓨터에서 스크립트를 실행하는 것입니다.

사용하다net use또는New-PSDrive새 드라이브를 만드는 방법:

New-PsDrive: PowerShell 환경에서만 볼 수 있는 새 PsDrive 생성:

New-PSDrive -Name Y -PSProvider filesystem -Root \\ServerName\Share
Copy-Item BigFile Y:\BigFileCopy

사용: OS의 모든 부분에서 볼 수 있는 새 드라이브를 만듭니다.

Net use y: \\ServerName\Share
Copy-Item BigFile Y:\BigFileCopy

원격 파일에 액세스하기 위해 사용자의 자격 증명이 필요한 경우 시스템을 생성할 수 있습니다.Net.WebClient 개체는 cmdlet New-Object를 사용하여 "원격으로 파일 복사"를 수행합니다.

$Source = "\\192.168.x.x\somefile.txt"
$Dest   = "C:\Users\user\somefile.txt"
$Username = "username"
$Password = "password"

$WebClient = New-Object System.Net.WebClient
$WebClient.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)

$WebClient.DownloadFile($Source, $Dest)

또는 파일을 업로드해야 하는 경우 파일 업로드:

$Dest = "\\192.168.x.x\somefile.txt"
$Source   = "C:\Users\user\somefile.txt"

$WebClient.UploadFile($Dest, $Source)

의 답변 중 하나도 저에게 효과가 없었습니다.다음 오류가 계속 발생했습니다.

Copy-Item : Access is denied
+ CategoryInfo          : PermissionDenied: (\\192.168.1.100\Shared\test.txt:String) [Copy-Item], UnauthorizedAccessException>   
+ FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand

그래서 이것이 저에게 도움이 되었습니다.

netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes

그런 다음 호스트에서 Run 박스에 있는 시스템을 사용하여 다음 작업을 수행했습니다.

\\{IP address of nanoserver}\C$

언급URL : https://stackoverflow.com/questions/10741609/copy-file-remotely-with-powershell

반응형