Saya sedang menulis skrip PowerShell yang ingin saya jalankan dari Server A. Saya ingin terhubung ke Server B dan menyalin file ke Server A sebagai cadangan.
Jika itu tidak dapat dilakukan maka saya ingin terhubung ke Server B dari Server A dan menyalin file ke direktori lain di Server B.
Saya melihat Copy-Item
perintahnya, tetapi saya tidak melihat cara memberinya nama komputer.
Saya akan berpikir saya bisa melakukan sesuatu seperti
Copy-Item -ComputerName ServerB -Path C:\Programs\temp\test.txt -Destination (not sure how it would know to use ServerB or ServerA)
Bagaimana saya bisa melakukan ini?
powershell
powershell-2.0
chobo2
sumber
sumber
Jawaban:
Ini hanya berfungsi ketika sesi PowerShell berjalan di bawah pengguna yang memiliki hak untuk kedua saham administratif.
Saya menyarankan untuk menggunakan berbagi jaringan biasa di server B dengan akses hanya-baca untuk semua orang dan cukup hubungi (dari Server A):
Copy-Item -Path "\\\ServerB\SharedPathToSourceFile" -Destination "$Env:USERPROFILE" -Force -PassThru -Verbose
sumber
Copy-Item -FromSession
).Dari PowerShell versi 5 dan seterusnya (disertakan dalam Windows Server 2016, dapat diunduh sebagai bagian dari WMF 5 untuk versi sebelumnya ), ini dimungkinkan dengan melakukan remote. Manfaatnya adalah ia berfungsi meskipun, karena alasan apa pun, Anda tidak dapat mengakses share.
Agar ini berfungsi, sesi lokal tempat penyalinan dimulai harus menginstal PowerShell 5 atau lebih tinggi. Sesi jarak jauh tidak perlu menginstal PowerShell 5 - ia bekerja dengan versi PowerShell serendah 2, dan versi Windows Server serendah 2008 R2. [1]
Dari server A, buat sesi ke server B:
$b = New-PSSession B
Dan kemudian, masih dari A:
Copy-Item -FromSession $b C:\Programs\temp\test.txt -Destination C:\Programs\temp\test.txt
Menyalin item ke B dilakukan dengan
-ToSession
. Perhatikan bahwa jalur lokal digunakan dalam kedua kasus; Anda harus melacak server apa yang Anda gunakan.[1]: saat menyalin dari atau ke server jarak jauh yang hanya memiliki PowerShell 2, waspadalah terhadap bug ini di PowerShell 5.1 , yang pada saat penulisan berarti penyalinan file rekursif tidak berfungsi
-ToSession
, penyalinan yang tampaknya tidak berfungsi di semua dengan-FromSession
.sumber
scp
lebihssh
di Linux ... tidak perlu repot-repot dengan saham sial!Gunakan
net use
atauNew-PSDrive
untuk membuat drive baru:New-PsDrive: buat PsDrive baru yang hanya terlihat di lingkungan PowerShell:
Penggunaan bersih: buat drive baru yang terlihat di semua bagian OS.
sumber
New-PSDrive : A specified logon session does not exist. It may already have been terminated
-> Saya pikir sesi sebelumnya masih berlangsung -> Jadi saya mencoba menggunakanRemove-PSDrive
-> tetap tidak berhasil. Juganet use <driveLetter> /delete
tidak membantu. Hal lain yang dapat saya lakukan agar saya dapat menjalankan perintah ini dalam konfigurasi pembuatan perangkat lunak?New-PSDrive
dua kali yang seharusnya Anda lakukanA drive with the name 'Y' already exists.
Seandainya file jarak jauh memerlukan kredensial Anda untuk dapat diakses, Anda dapat membuat objek System.Net.WebClient menggunakan cmdlet New-Object untuk "Menyalin File dari Jarak Jauh", seperti itu
$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)
Atau jika Anda perlu mengupload file, Anda dapat menggunakan UploadFile:
$Dest = "\\192.168.x.x\somefile.txt" $Source = "C:\Users\user\somefile.txt" $WebClient.UploadFile($Dest, $Source)
sumber
Tak satu pun dari jawaban di atas berhasil untuk saya. Saya terus mendapatkan kesalahan ini:
Jadi ini berhasil untuk saya:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
Kemudian dari host saya mesin saya di kotak Run saya baru saja melakukan ini:
sumber