108

サーバー 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)

これどうやってするの?

4

5 に答える 5

103

管理共有を使用して、システム間でファイルをコピーするだけです。この方法の方がはるかに簡単です。

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

ローカルファイルシステムパスの代わりにUNCパスを使用することで、これらのUNCパスにアクセスできる任意のクライアントシステムからスクリプトを実行できるようになります。ローカルファイルシステムパスを使用する場合は、特定のコンピューターでスクリプトを実行することになります。

于 2012-05-24T18:48:34.177 に答える
42

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
于 2012-05-24T17:11:40.127 に答える
18

Just in case that the remote file needs your credential to get accessed, you can generate a System.Net.WebClient object using cmdlet New-Object to "Copy File Remotely", like so

$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)

Or if you need to upload a file, you can use UploadFile:

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

$WebClient.UploadFile($Dest, $Source)
于 2014-06-20T04:59:33.223 に答える