서버 A에서 실행할 PowerShell 스크립트를 작성 중입니다. 서버 B에 연결하고 파일을 백업으로 서버 A에 복사하려고합니다.
그렇게 할 수 없다면 서버 A에서 서버 B에 연결하고 파일을 서버 B의 다른 디렉토리에 복사하고 싶습니다.
내가 볼 Copy-Item
명령을,하지만 난 그것을 컴퓨터 이름을 지정하는 방법을 볼 수 없습니다.
나는 내가 할 수 있다고 생각했을 것입니다.
Copy-Item -ComputerName ServerB -Path C:\Programs\temp\test.txt -Destination (not sure how it would know to use ServerB or ServerA)
어떻게 할 수 있습니까?
답변
관리 공유를 사용하여 시스템간에 파일을 복사하기 만하면됩니다. 이 방법이 훨씬 쉽습니다.
Copy-Item -Path \\serverb\c$\programs\temp\test.txt -Destination \\servera\c$\programs\temp\test.txt;
로컬 파일 시스템 경로 대신 UNC 경로를 사용하면 해당 UNC 경로에 대한 액세스 권한이있는 모든 클라이언트 시스템에서 스크립트를 실행할 수 있습니다. 로컬 파일 시스템 경로를 사용하는 경우 특정 컴퓨터에서 스크립트를 실행할 수 있습니다.
이는 두 관리 공유에 대한 권한이있는 사용자로 PowerShell 세션이 실행되는 경우에만 작동합니다.
모든 사람에게 읽기 전용 액세스 권한이있는 서버 B에서 일반 네트워크 공유를 사용하고 간단히 (서버 A에서) 호출하는 것이 좋습니다.
Copy-Item -Path "\\\ServerB\SharedPathToSourceFile" -Destination "$Env:USERPROFILE" -Force -PassThru -Verbose
답변
에서 PowerShell을 버전 5 이후 (윈도우 서버 2016에 포함 된 이전 버전 WMF 5의 일부로 다운로드 ),이 리모팅 가능합니다. 이것의 장점은 어떤 이유로 든 공유에 액세스 할 수없는 경우에도 작동한다는 것입니다.
이 작업을 수행하려면 복사가 시작된 로컬 세션에 PowerShell 5 이상이 설치되어 있어야합니다. 원격 세션 에는 PowerShell 5가 설치되어 있지 않아도됩니다. PowerShell 버전 2 개 및 Windows Server 버전 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
. 두 경우 모두 로컬 경로가 사용됩니다. 어떤 서버에 있는지 추적해야합니다.
[1] : PowerShell 2 만있는 원격 서버에서 복사 할 때 PowerShell 5.1의이 버그에 주의하십시오. 작성 당시에는 재귀 파일 복사가 -ToSession
에서 작동하지 않고 분명히 복사가 작동하지 않음을 의미합니다. 모두 -FromSession
.
답변
사용 net use
또는 New-PSDrive
새 드라이브를 만들 :
New-PsDrive : PowerShell 환경에서만 볼 수있는 새 PsDrive를 만듭니다.
New-PSDrive -Name Y -PSProvider filesystem -Root \\ServerName\Share
Copy-Item BigFile Y:\BigFileCopy
Net use : OS의 모든 부분에서 볼 수있는 새 드라이브를 만듭니다.
Net use y: \\ServerName\Share
Copy-Item BigFile Y:\BigFileCopy
답변
원격 파일에 액세스하기 위해 자격 증명이 필요한 경우 cmdlet New-Object 를 사용하여 “파일을 원격으로 복사” 하는 System.Net.WebClient 개체를 생성 할 수 있습니다.
$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)
또는 파일을 업로드해야하는 경우 UploadFile을 사용할 수 있습니다.
$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
그런 다음 내 호스트에서 실행 상자의 내 컴퓨터에서 다음을 수행했습니다.
\\{IP address of nanoserver}\C$