Bagikan melalui


Menggunakan Windows PowerShell untuk Membuat Pekerjaan Transfer BITS

Anda dapat menggunakan cmdlet PowerShell untuk membuat pekerjaan transfer Background Intelligent Transfer Service (BITS) yang sinkron dan asinkron.

Semua contoh dalam topik ini menggunakan cmdlet Start-BitsTransfer . Untuk menggunakan cmdlet, pastikan untuk mengimpor modul terlebih dahulu. Untuk menginstal modul, jalankan perintah berikut: Import-Module BitsTransfer. Untuk informasi selengkapnya, ketik Get-Help Start-BitsTransfer di prompt PowerShell.

Penting

Ketika Anda menggunakan cmdlet *-BitsTransfer dari dalam proses yang berjalan dalam konteks noninteraktif, seperti layanan Windows, Anda mungkin tidak dapat menambahkan file ke pekerjaan BITS, yang dapat mengakibatkan status ditangguhkan. Agar pekerjaan dilanjutkan, identitas yang digunakan untuk membuat pekerjaan transfer harus masuk. Misalnya, saat membuat pekerjaan BITS dalam skrip PowerShell yang dijalankan sebagai pekerjaan Penjadwal Tugas, transfer BITS tidak akan pernah selesai kecuali pengaturan tugas Penjadwal Tugas "Jalankan hanya saat pengguna masuk" diaktifkan.

 

Untuk membuat pekerjaan transfer BITS sinkron

Start-BitsTransfer -Source https://Server01/serverdir/testfile1.txt `
-Destination C:\clientdir\testfile1.txt

Catatan

Karakter aksen kuburan (') digunakan untuk menunjukkan jeda baris.

 

Dalam contoh sebelumnya, nama lokal dan jarak jauh file ditentukan dalam parameter Sumber dan Tujuan . Perintah mengembalikan ketika transfer file selesai atau ketika memasuki status kesalahan.

Jenis transfer default adalah Unduh. Saat Anda mengunggah file ke lokasi HTTP, parameter TransferType harus diatur ke Unggah.

Karena posisi parameter diberlakukan untuk cmdlet Start-BitsTransfer , nama parameter tidak perlu ditentukan untuk parameter Sumber dan Tujuan. Oleh karena itu, perintah ini dapat disederhanakan sebagai berikut.

Start-BitsTransfer https://Server01/serverdir/testfile1.txt C:\clientdir\testfile1.txt

Untuk membuat pekerjaan transfer BITS sinkron dengan beberapa file

Start-BitsTransfer -Source C:\clientsourcedir\*.txt `
-Destination c:\clientdir\ -TransferType Download

Dalam contoh sebelumnya, perintah Start-BitsTransfer membuat pekerjaan transfer BITS baru. Semua file ditambahkan ke pekerjaan ini dan ditransfer secara berurutan ke klien.

Catatan

Jalur tujuan tidak dapat menggunakan karakter kartubebas. Jalur tujuan mendukung direktori relatif, jalur akar, atau direktori implisit (yaitu, direktori saat ini). File tujuan tidak dapat diganti namanya dengan menggunakan karakter kartubebas. Selain itu, URL HTTP dan HTTPS tidak berfungsi dengan kartubebas. Kartubebas hanya valid untuk jalur UNC dan direktori lokal.

 

Untuk membuat pekerjaan transfer BITS sinkron dan menentukan kredensial untuk server jarak jauh

Start-BitsTransfer -DisplayName MyJob -Credential Username\Domain `
-Source https://server01/servertestdir/testfile1.txt -Destination c:\clienttestdir\testfile1.txt `
-ProxyUsage Override -ProxyList @(https://proxy1, 123.24.21.23, proxy3)

Dalam contoh sebelumnya, pengguna membuat pekerjaan transfer BITS untuk mengunduh file dari server yang memerlukan autentikasi. Pengguna dimintai kredensial, dan parameter Kredensial meneruskan objek kredensial ke cmdlet Start-BitsTransfer . Pengguna menetapkan proksi eksplisit, dan pekerjaan transfer BITS hanya menggunakan proksi yang ditentukan oleh parameter ProxyList . Parameter DisplayName memberi pekerjaan transfer BITS nama tampilan yang unik.

Untuk membuat pekerjaan transfer BITS sinkron dari file CSV

Import-CSV filelist.txt | Start-BitsTransfer -TransferType Upload

Catatan

"|" adalah karakter pipa.

 

Dalam contoh sebelumnya, pengguna membuat pekerjaan transfer BITS yang mengunggah beberapa file dari klien. Cmdlet Import-CSV mengimpor lokasi file sumber dan tujuan dan menyalurkannya ke perintah Start-BitsTransfer. Perintah Start-BitsTransfer membuat pekerjaan transfer BITS baru untuk setiap file, menambahkan file ke pekerjaan, lalu mentransfernya secara berurutan ke server.

Konten file Filelist.txt harus dalam format berikut:

Source, Destination
c:\clienttestdir\testfile1.txt, https://server01/servertestdir/testfile1.txt
c:\clienttestdir\testfile2.txt, https://server01/servertestdir/testfile2.txt
c:\clienttestdir\testfile3.txt, https://server01/servertestdir/testfile3.txt
c:\clienttestdir\testfile4.txt, https://server01/servertestdir/testfile4.txt

Untuk membuat pekerjaan transfer BITS asinkron

$Job = Start-BitsTransfer -Source https://Server1.TrustedDomain.com/File1.zip `
       -Destination d:\temp\downloads\ -Asynchronous

while (($Job.JobState -eq "Transferring") -or ($Job.JobState -eq "Connecting")) `
       { sleep 5;} # Poll for status, sleep for 5 seconds, or perform an action.

Switch($Job.JobState)
{
    "Transferred" {Complete-BitsTransfer -BitsJob $Job}
    "Error" {$Job | Format-List } # List the errors.
    default {"Other action"} #  Perform corrective action.
}

Dalam contoh sebelumnya, pekerjaan transfer BITS ditetapkan ke variabel $Job. File diunduh secara berurutan. Setelah pekerjaan transfer selesai, file segera tersedia. Jika $Job.JobState mengembalikan "Ditransfer", objek $Job dikirim ke cmdlet Complete-BitsTransfer .

Jika $Job.JobState mengembalikan "Kesalahan", objek $Job dikirim ke cmdlet Format-List untuk mencantumkan kesalahan.

Untuk mengelola sesi PowerShell Remote

Dimulai dengan Windows 10, versi 1607, Anda dapat menjalankan Cmdlet PowerShell, BITSAdmin, atau aplikasi lain yang menggunakan antarmuka BITS dari baris perintah PowerShell Remote yang terhubung ke komputer lain (fisik atau virtual). Kemampuan ini tidak tersedia saat menggunakan baris perintah PowerShell Direct ke komputer virtual pada komputer fisik yang sama, dan tidak tersedia saat menggunakan cmdlet WinRM.

Pekerjaan BITS yang dibuat dari sesi PowerShell Jarak Jauh berjalan di bawah konteks akun pengguna sesi tersebut dan hanya akan membuat kemajuan ketika setidaknya ada satu sesi masuk lokal aktif atau sesi PowerShell Jarak Jauh yang terkait dengan akun pengguna tersebut. Anda dapat menggunakan PSSessions persisten PowerShell untuk menjalankan perintah jarak jauh tanpa perlu membuka jendela PowerShell untuk setiap pekerjaan untuk terus membuat kemajuan, seperti yang dijelaskan dalam Mengelola komputer jarak jauh dengan menggunakan Windows PowerShell.

  • New-PSSession membuat sesi Remote PowerShell yang persisten. Setelah dibuat, objek PSSession bertahan di komputer jarak jauh hingga dihapus secara eksplisit. Setiap pekerjaan BITS yang dimulai dalam sesi aktif akan membuat kemajuan mentransfer data, bahkan setelah klien terputus dari sesi.
  • Putuskan sambungan-PSSession memutuskan sambungan komputer klien dari sesi PowerShell Jarak Jauh dan status sesi terus dipertahankan oleh komputer jarak jauh. Yang terpenting, proses sesi jarak jauh akan terus dijalankan, dan pekerjaan BITS akan terus membuat kemajuan. Komputer klien bahkan dapat memulai ulang dan/atau mematikan setelah memanggil Disconnect-PSSession.
  • Koneksi-PSSession menyambungkan ulang komputer klien ke sesi Remote PowerShell aktif.
  • Remove-PSSession merobek sesi PowerShell Jarak Jauh.

Contoh di bawah ini menunjukkan cara menggunakan PowerShell Remote untuk bekerja dengan pekerjaan transfer BITS asinkron dengan cara yang memungkinkan pekerjaan untuk terus membuat kemajuan bahkan ketika Anda tidak terhubung secara aktif ke sesi jarak jauh.

# Establish a PowerShell Remote session in Server01 with name 'MyRemoteSession'
New-PSSession -ComputerName Server01 -Name MyRemoteSession -Credential Domain01\User01

# Enter the previously-established session to execute commands
Enter-PSSession -Name MyRemoteSession

# Enumerate active BITS transfers on the remote machine
Get-BitsTransfer

# While running in the context of the PowerShell Remote session, start a new BITS transfer
Start-BitsTransfer -Source https://Server1.TrustedDomain.com/File1.zip -Destination c:\temp\downloads\ -Asynchronous

# Exit the PowerShell Remote session's context
Exit-PSSession

# Disconnect the 'MyRemoteSession' PowerShell Remote session from the current PowerShell window
# After this command, it is safe to close the current PowerShell window and turn off the local machine
Disconnect-PSSession -Name MyRemoteSession


# The commands below can be executed from a different PowerShell window, even after rebooting the local machine
# Connect the 'MyRemoteSession' PowerShell Remote session to the current PowerShell window
Connect-PSSession -ComputerName Server01 -Name MyRemoteSession

# Enter the previously-established session to execute commands
Enter-PSSession -Name MyRemoteSession

# Enumerate active BITS transfers on the remote machine
Get-BitsTransfer

# Manage BITS transfers on the remote machine via Complete-BitsTransfer, Remove-BitsTransfer, etc.

# Exit the PowerShell Remote session's context
Exit-PSSession

# Destroy the 'MyRemoteSession' PowerShell Remote session when no longer needed
Remove-PSSession -Name MyRemoteSession

Start-BitsTransfer

Complete-BitsTransfer