Разное

Start bitstransfer: Start-BitsTransfer (BitsTransfer) | Microsoft Docs

14.04.1989

Содержание

Использование Windows PowerShell для создания заданий передачи BITS — Win32 apps

  • Статья
  • Чтение занимает 5 мин
Были ли сведения на этой странице полезными?

Оцените свои впечатления

Да Нет

Хотите оставить дополнительный отзыв?

Отзывы будут отправляться в корпорацию Майкрософт.

Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.

Отправить

В этой статье

Командлеты PowerShell можно использовать для создания синхронных и асинхронных фоновая интеллектуальная служба передачи (BITS) заданий передачи.

Во всех примерах в этом разделе используется командлет Start-BitsTransfer . Чтобы использовать командлет, сначала импортируйте модуль. Чтобы установить модуль, выполните следующую команду: Import-Module BitsTransfer. Для получения дополнительных сведений введите

Get-Help Start-BitsTransfer в командной строке PowerShell.

Важно!

при использовании командлетов * -BitsTransfer из процесса, который выполняется в неинтерактивном контексте, например в службе Windows, может отсутствовать возможность добавления файлов в задания BITS, что может привести к приостановке работы. Для продолжения задания необходимо войти в систему удостоверение, которое использовалось для создания задания перемещения. Например, при создании задания BITS в скрипте PowerShell, который выполнялся как задание планировщик задач, перенос BITS не будет выполнен, если включен параметр задачи планировщик задач «запускать только при входе пользователя в систему».

Создание задания синхронной передачи BITS

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

Примечание

Знак ударения-ударения ( ` ) используется для обозначения разрыва строки.

В предыдущем примере локальные и удаленные имена файла указываются в параметрах источника и назначения соответственно. По завершении передачи файла или при появлении состояния ошибки отображается командная строка.

Тип перемещения по умолчанию — download. При передаче файлов в расположение HTTP параметру трансфертипе должно быть присвоено значение upload.

Так как для командлета Start-BitsTransfer применяется расположение параметра, для параметров источника и назначения не нужно указывать имена параметров. Поэтому эту команду можно упростить следующим образом.

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

Создание задания синхронной передачи BITS с несколькими файлами

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

В предыдущем примере команда Start-BitsTransfer создает новое задание передачи BITS. Все файлы добавляются в это задание и последовательно передаются клиенту.

Примечание

Конечный путь не должен содержать подстановочные знаки. Целевой путь поддерживает относительные каталоги, корневые пути или неявные каталоги (т. е. текущий каталог). Файлы назначения нельзя переименовывать с помощью подстановочных знаков. Кроме того, URL-адреса HTTP и HTTPS не работают с подстановочными знаками. Подстановочные знаки допустимы только для UNC-путей и локальных каталогов.

Создание задания синхронной передачи BITS и указание учетных данных для удаленного сервера

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)

В предыдущем примере пользователь создает задание передачи BITS для загрузки файла с сервера, для которого требуется проверка подлинности. Пользователю предлагается ввести учетные данные, а параметр Credential передает объект учетных данных командлету Start-BitsTransfer . Пользователь устанавливает явный прокси-сервер, а задание передачи BITS использует только прокси, определенные параметром проксилист . Параметр DisplayName дает заданию уникальное отображаемое имя для задания передачи BITS.

Создание задания синхронной передачи BITS из CSV-файла

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

Примечание

» | » — Это символ вертикальной черты.

В предыдущем примере пользователь создает задание передачи BITS, которое отправляет несколько файлов с клиента. Командлет Import-CSV импортирует исходные и конечные расположения файлов и передает их в команду Start-BitsTransfer . Команда Start-BitsTransfer создает новое задание передачи BITS для каждого файла, добавляет файлы в задание и затем передает их последовательно на сервер.

Содержимое файла Filelist.txt должно быть в следующем формате:

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

Создание задания асинхронной передачи BITS

$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.
}

В предыдущем примере задание передачи BITS было назначено переменной $Job. Файлы загружаются последовательно. После завершения задания перемещения файлы немедленно становятся доступными. Если $Job. JobState возвращает «передано», объект $Job отправляется в командлет Complete-BitsTransfer .

Если $Job. JobState возвращает «Error», объект $Job отправляется в командлет Format-List для вывода списка ошибок.

Управление удаленными сеансами PowerShell

начиная с Windows 10 версии 1607 можно запускать командлеты powershell, битсадмин или другие приложения, использующие интерфейсы BITS из удаленной командной строки powershell, подключенной к другому компьютеру (физическому или виртуальному). Эта возможность недоступна при использовании командной строки PowerShell Direct для виртуальной машины на том же физическом компьютере и недоступна при использовании командлетов WinRM.

Задание BITS, созданное из удаленного сеанса PowerShell, выполняется в контексте учетной записи пользователя этого сеанса и выполняется только при наличии хотя бы одного активного локального сеанса входа или удаленного сеанса PowerShell, связанного с этой учетной записью пользователя. Вы можете использовать хранимую PSSession PowerShell для выполнения удаленных команд без необходимости открывать окно PowerShell для каждого задания, чтобы продолжить выполнение, как описано в статье основы PowerShell: удаленное управление.

  • New-PSSession создает постоянный удаленный сеанс PowerShell. После создания объекты PSSession сохраняются на удаленном компьютере до тех пор, пока они не будут удалены явным образом. Все задания BITS, инициированные в активном сеансе, проводят передачу данных даже после отключения клиента от сеанса.
  • Disconnect-PSSession отключает клиентский компьютер от удаленного сеанса PowerShell, и состояние сеанса сохраняется на удаленном компьютере. Что более важно, процессы удаленного сеанса будут продолжать выполняться, и задания BITS продолжат выполнение. Клиентский компьютер может даже перезагружаться или отключаться после вызова метода Disconnect-PSSession.
  • Подключение-PSSession повторно подключает клиентский компьютер к активному удаленному сеансу PowerShell.
  • Remove-PSSession слезами удаленный сеанс PowerShell.

В приведенном ниже примере показано, как использовать Remote PowerShell для работы с асинхронными заданиями передачи BITS, что позволяет продолжить выполнение задания даже в том случае, если вы не подключены к удаленному сеансу.

# 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

Как работать с Powershell BITS

Powershell BITS (Background Intelligent Transfer Service) — это серия командлетов, которая позволяет скачивать файлы используя одноименный протокол в синхронной и асинхронной загрузке. Особенность в том, что если наш канал забит на 70%, то протокол будет использовать 30% и не будет конкурировать за скорость (по умолчанию такого приоритета нет). BITS давно используется в некоторых службах Microsoft типа WSUS. Этот командлет пришел на замену старой утилиты bitsadmin. Через команды можно установить приоритеты работы, а через политики конкретно скорость. Работает по протоколу HTTP/S (80/443)

Если вы хотите узнать какая у вас версия сначала нужно выполнить импорт модуля:


Import-Module -Name BitsTransfer

Затем получить данные по командлетам: 


Get-Command -Module BitsTransfer

Можно так же увидеть работающий сервис:


Get-Service -Name *BITS*

Из доступных методов аутентификации есть для прокси (ключ -ProxyAuthentication) и для конечного сервера (ключ -Authentication):

  • Basic
  • Digest
  • NTLM
  • Negotiate
  • MS Passport

 

Для начала скачивания нужно выполнить командлет:


Start-BitsTransfer -Source "\\server\ubuntu.iso" -Destination C:\

Где:
-Source — откуда скачиваем
-Destination — куда

Режим по умолчанию синхронный. Об этом так же говорит подобная картинка:

Если при синхронной работе у нас или источника будут проблемы с каналом, выключится компьютер например, то процесс прервется без возможности восстановления. Так же будет если мы нажмем Ctr+C. 

Для того что бы выполнить асинхронное скачивание нужно добавить ключ -Asynchronous:


Start-BitsTransfer -Source "\\server\ubuntu.iso" -Destination C:\ -Asynchronous -DisplayName "AsyncDownload"

В асинхронном режиме у нас появляется информация только о начатой задаче:

В предыдущей команде я добавил ключ -DisplayName, который дает имя задаче иначе оно будет по умолчанию. С помощью этой команды мне будет легче идентифицировать процесс и его статус: 


Get-BitsTransfer | SELECT *

Можно увидеть поля BytesTotal(сколько весит документ) и BytesTransferred (сколько скачено). Если у нас прервется соединение, то в асинхронном режиме никаких уведомлений не будет (в отличие от синхронного). Для того что бы увидеть проблему нужно еще раз запустить этот командлет:

Восстановление процесса произойдет либо через 10 минут (по умолчанию) либо в ручную. При этом, всегда когда мы работаем с существующим процессом BITS мы должны передавать объект либо через конвейер (как на примере ниже) либо через переменную. Если не указать имя для процесса, то Resume произойдет для всех:


Get-BitsTransfer -Name "AsyncDownload" | Resume-BitsTransfer -Asynchronous

При этом ключ -Asynchronous нужно указывать обязательно если не желаете синхронную.

Если мы передумали, то возможно выполнить Remove:


Get-BitsTransfer | Remove-BitsTransfer

Если хотим приостановить процесс (подходит и для синхронной загрузке) можно использовать:


Get-BitsTransfer | Suspend-BitsTransfer

Есть вариант скачивания сразу на удаленную машину в обоих режимах, по протоколу HTTP/S:


Start-BitsTransfer -Source "\\Server1\ubuntu.iso" -Destination \\Server2\ -DisplayName "ShipBits"

После окончания, в случае асинхронной работы, нам нужно завершить процесс командой:


Get-BitsTransfer -Name "AsyncDownload" | Complete-BitsTransfer

Только после этого файл преобразуется из tmp.

Из неописанного есть ключ -UseStoredCredential , который проверит учетные данные в Windows Credential Manager или другие учетки с ключом -Credential.

 

У нас доступны 4 вида приоритетов загрузки

  • Foreground — задачи самого приоритетного плана с конкуренцией за канал. Стоит по умолчанию.
  • High — Используется только свободная часть канала, но приоритет среди других задач будет выше.
  • Normal — Только свободная часть канала, но приоритет ниже чем у High
  • Low — Самый низкий приоритет, только свободный канал.

Мы можем использовать этот приоритет во время начала закачивания:


Start-BitsTransfer -Source $path -Destination C:\Test\ -DisplayName "ShipBits" -Asynchronous -Priority Normal

Где:
-Priority — режим приоритета

Указываем приоритет загрузки уже у созданного, рабочего процесса:


Get-BitsTransfer -Name "Test" | Set-BitsTransfer -Priority Low

Как и у Start, так и Set есть ключи для интервала возобновления загрузки:


Get-BitsTransfer -JobId "6e74e59f-31b3-4d51-b7d6-0d40fd4a9d4c" | Set-BitsTransfer -RetryInterval 60 -RetryTimeout 60

Где:
-RetryInterval — То, сколько времени должно пройти для повторной попытки скачивания, в секундах. Минимально 60 секунд. По умолчанию 600 секунд (10 минут).
-RetryTimeout — В течении какого времени эти попытки будут происходить. По умолчанию в течение 14 дней. Если установить 0, то никаких попыток не будет. 

Мы так же можем установить скорость для BITS, но это делается в политиках. Политики находятся:

Computer Configuration -> Administrative Templates -> Network -> Background Intelligent Transfer Service (BITS)

 

Для закачивания есть два значения, которые указываются в ключе -TranferType. Всего значения три:
-Download — по умолчанию.
-Upload
-UploadReply — загружает файл и получает копию.

Командлет аналогичный:


Start-BitsTransfer -Source $path -Destination \\Server\Test\ -DisplayName "ShipBits" -Asynchronous -Priority Normal -TransferType Upload

Причем мы не сможем делать Upload для того что бы скачать одновременно скачивать файл и передавать на другой компьютер, а вот с Download можем.

 

Скачивать мы можем папками с помощью wildcard * :


Start-BitsTransfer -Source \\AD\C$\Folder1\* -Destination C:\Folder2 -Asynchronous

Мы можем скачать только определенный тип, добавив расширение:


Start-BitsTransfer -Source \\AD\C$\Folder1\*.txt -Destination C:\Folder2 -Asynchronous

Если мы используем асинхронное скачивание — не забываем завершить процесс:

Или использовать командлет Add-BitsFile, который позволяет добавлять файлы во время скачивания:


Get-BitsTransfer | Add-BitsFile -Source \\CL1\D$\Photo\*.jpg -Destination C:\s

Загружать можно только файл. Вариант прогнать через цикл, но в таком случае будет множество процессов:


Get-ChildItem -Path $source |
foreach {
$destination =  "\\AD\C$\Folder3\$($_.name)"
$bits = Start-BitsTransfer -Source $($_.Fullname) -Destination $destination -TransferType Upload -Asynchronous
}

В документации Microsoft есть вариант использования CSV файлов через конвейер с Add-BitsFile, но у меня так и не сработало. Возможно или неверная документация.

На веб сервере BIts можно включить тут:

Теги: #powershell

Powershell BitsTransfer не завершается — CodeRoad



Мне очень жаль, что я продолжаю спрашивать о Powershell, мой сценарий-foo-это не то, что нужно.

Я пишу BitsTransfer .PS1, чтобы автоматизировать еженедельную загрузку файла ASCII.

Кажется, что он никогда не завершается и не достигает состояния «Transferred» и, похоже, застопорился в состоянии «Transferring». Я вижу файл TMP в папке My-Destination с моими данными ASCII в нем.

Когда я вручную загружаю целевой файл и сравниваю его с файлом TMP, они имеют одинаковый размер и, похоже, имеют одинаковые первые и последние записи. Я предполагаю, что загрузка завершена.

Если я вручную запускаю Get-BitsTransfer | Complete-BitsTransfer, файл TMP исчезает, но по-прежнему нет файла назначения.

В моем сценарии нет ничего сложного…

$date= Get-Date -format yyMMdd
$ntispasswd = ConvertTo-SecureString "*******" -AsPlainText -Force
$ntiscreds = New-Object System.Management.Automation.PSCredential ("*******", $ntispasswd)
$jobdescriptor = "DMFWA" + $date
$dmfpath = "C:\DMF"

# -Source https://dmf.ntis.gov/dmldata/weekly/WA$date `

Import-Module BitsTransfer

Start-BitsTransfer `
    -DisplayName $jobdescriptor `
    -Priority High `
    -ProxyUsage Override `
    -ProxyList mckwebfilt1:3128 `
    -RetryInterval 60 `
    -TransferType Download `
    -Source https://dmf.ntis.gov/dmldata/weekly/WA130322 `
    -Destination $dmfpath\TestWA$date.txt `
    -Authentication Basic `
    -Credential $ntiscreds `
    -Asynchronous

$job = Get-BitsTransfer $displayname

While($Job.Jobstate -ne 'Transferred'){
    $job
    Start-Sleep -s 1
}

Complete-BitsTransfer $job

Кто-нибудь может помочь мне понять, что я делаю не так?

powershell microsoft-bits
Поделиться Источник Colin     01 апреля 2013 в 20:41

4 ответа


  • Powershell BitsTransfer (https) с недействительным центром сертификации

    Я пытаюсь автоматизировать еженедельную загрузку текстового файла с сайта https с помощью скрипта ps1. Мои простые попытки подключиться выглядят так — Start-BitsTransfer ` -source https://url.com/file ` -destination d:\test.txt Я получаю ошибку «The Центр сертификации недействителен или…

  • Powershell BitsTransfer https базовый синтаксис аутентификации

    Я новичок в написании сценариев PowerShell. Я борюсь с документацией MS и нахожу несколько примеров для работы. Я пытаюсь автоматизировать еженедельную загрузку большого txt-файла из ntis.gov с помощью скрипта BitsTransfer. Я использую сценарий .ps1, потому что, по-видимому, SSIS не может сделать…



1

Ты все сделал правильно:

Import-Module BitsTransfer

Start-BitsTransfer -Source $url -Destination $output -Asynchronous    
Get-BitsTransfer | Complete-BitsTransfer

Возможные сбои

  1. параметр назначения неверен $dmfpath\TestWA$date.txt
  2. есть более 60 BitTransfers запущенных, закончите их Get-BitsTransfer | Remove-BitsTransfer

Поделиться hdev     23 июня 2016 в 16:09



1

Я потратил слишком много времени на BitsAdmin, пытаясь передать файл, который так и не был завершен, потому что длина файла не была указана с сервера.

Start-BitsTransfer : Die Dateigröße wurde vom Server nicht zurückgegeben. 
Möglicherweise enthält die URL dynamischen Inhalt. Der
Inhaltslängenheader ist in der Server-HTTP-Antwort nicht verfügbar.
In Zeile:1 Zeichen:1
+ Start-BitsTransfer http://***/file c:\users\***\file.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Start-BitsTransfer],Exception
+ FullyQualifiedErrorId :
StartBitsTransferCOMException,Microsoft.BackgroundIntelligentTransfer.
  Management.NewBitsTransferCommand

После попытки сделать то же самое с powershell с помощью Start-BitsTransfer поведение было таким же.

Это решение действительно потрясающее и исправило также мою проблему! Спасибо!

$request = New-Object System.Net.Webclient
$passwd = ConvertTo-SecureString "**" -AsPlainText -Force
$request.Credentials = New-Object System.Management.Automation.PSCredential ("**", $passwd)
$request.Downloadstring("https://my full target url") 

Поделиться materia     13 мая 2018 в 21:53



0

Это оказалось «Royal PITA».

Спасибо, Кит, за подсказку.

Я не мог заставить BitTransfer работать должным образом и прибегнул к чему-то подобному..

$request = New-Object System.Net.Webclient
$passwd = ConvertTo-SecureString "**" -AsPlainText -Force
$request.Credentials = New-Object System.Management.Automation.PSCredential ("**", $passwd)
$request.Downloadstring("https://my full target url") 

Поделиться Colin     02 апреля 2013 в 21:23


Поделиться Keith Hill     01 апреля 2013 в 23:06


Похожие вопросы:


пакетный bitstransfer url с пробелами

У меня есть batch file. Я использую его для загрузки установщиков (vlc.exe, VC++ 2008 redistributable package vcredist_x86.exe и т. д.) Из интернета. Недавно я скачал распространяемый пакет VC++…


Start-BitsTransfer игнорирует имя файла при перенаправлении

Я использую команду Start-BitsTransfer для загрузки удаленных ресурсов в скриптах powershell. Однако, похоже, что команда не принимает правильное имя файла, когда url является коротким url….


powershell ссылка на объект bitstransfer не установлена на экземпляр объекта

у меня есть программа, написанная на C#, которая использует powershell bitstransfer для загрузки и загрузки файла с компьютера. он работал нормально до сегодняшнего дня, когда загрузка и загрузка…


Powershell BitsTransfer (https) с недействительным центром сертификации

Я пытаюсь автоматизировать еженедельную загрузку текстового файла с сайта https с помощью скрипта ps1. Мои простые попытки подключиться выглядят так — Start-BitsTransfer ` -source…


Powershell BitsTransfer https базовый синтаксис аутентификации

Я новичок в написании сценариев PowerShell. Я борюсь с документацией MS и нахожу несколько примеров для работы. Я пытаюсь автоматизировать еженедельную загрузку большого txt-файла из ntis.gov с…


Какова цель командлета Complete-BitsTransfer?

PowerShell и Windows имеют хорошую структуру для передачи файлов под названием BITS. Это может быть использовано синхронно: Start-BitsTransfer -Source \\remote_file_location -Destination ….


PowerShell BITS — FTP :: не удается найти диск

Увидев примеры использования BITS для передачи файлов с адресов http, а также обычных файловых ресурсов windows, я решил протестировать вытягивание и выталкивание в/из ftp. Я использовал следующие…


Работает BitsTransfer с записью «локальная служба»

Я работаю над созданием некоторых сценариев, чтобы немного облегчить свою работу. Одна из вещей, которые мне нужны, — это слишком много файлов для использования. Сначала я использовал powershell с…


PowerShell BitsTransfer использовать имена файлов из переменной в качестве источника

Я новичок в PowerShell, и я многое делаю, используя этот форум Вместе с другими поисковыми ответами в интернете, но этот становится лучше меня. У меня есть скрипт, который сравнивает две папки, и та…


Windows 2012 BitsTransfer

У меня есть несколько серверов с Windows 2012, но я не могу использовать командлет Start-BitsTransfer. Тот же командлет отлично работает на Windows server Windows 2012 R2 и 2016. Знаете ли вы, что…

powershell — Повторите попытку передачи файла BITS при неудачных загрузках с помощью Powershell

Я выполняю BITS-передачу ежедневных изображений с веб-сервера, и во время передачи у меня постоянно появляются случайные потери.

Во время циклического перебора загрузок я иногда получаю сообщение «Соединение было преждевременно закрыто» или «Произошла ошибка в поддержке безопасного канала». В каждой папке около 180 изображений, и это происходит с 5-10% из них. Мне нужно повторить загрузку тех, которые не были завершены.

Мой код для этого следует: мой несовершенный обходной путь — дважды запустить цикл, но я надеюсь найти лучшее решение.

# Set the URL where the images are located
$url = 'https://www.nrlmry.navy.mil/archdat/global/stitched/MoS_2/navgem/wind_waves/latest/'

# Set the local path where the images will be stored
$path = 'C:\images\Wind_Waves\latest\'

# Create a list of all assets returned from $url
$site = Invoke-WebRequest -UseBasicParsing -Uri $url

# Create a table subset from the $site of all files returned with a .jpg extension
$table = $site.Links | Where-Object{ $_.tagName -eq 'A' -and $_.href.ToLower().EndsWith("jpg") }

# Create a list of all href items from the table & call it $images
$images = $table.href 

# Enumerate all of the images - for troubleshooting purposes - can be removed
$images

# Check to make sure there are images available for download - arbitrarily picked more than 2 $images
if($images.count -gt 2){

    # Delete all of the files in the "latest" folder
    Remove-Item ($path + "*.*") -Force
# For loop to check to see if we already have the image and, if not, download it
ForEach ($image in $images)
{
if(![System.IO.File]::Exists($path + $image)){
    Write-Output "Downloading: " $image
    Start-BitsTransfer -Source ($url + $image) -Destination $path -TransferType Download -RetryInterval 60
    Start-Sleep 2
    }
}
Get-BitsTransfer | Where-Object {$_.JobState -eq "Transferred"} | Complete-BitsTransfer
} else {
Write-Output "No images to download"}

0

cpuguru 2 Сен 2020 в 20:37

3 ответа

Лучший ответ

Вот несколько измененная версия приведенного выше кода. Похоже, что при возникновении ошибки объект задания передачи BITS исчезает, поэтому нет смысла пытаться найти / возобновить это задание. Вместо этого я заключил весь блок Try-Catch в цикл while с выходом при загрузке файла.

$url = 'https://www.nrlmry.navy.mil/archdat/global/stitched/MoS_2/navgem/wind_waves/latest/'
$path = 'D:\Temp\images\Wind_Waves\latest'
$site = Invoke-WebRequest -UseBasicParsing -Uri $url
$MaxRetries = 3     # Initialize the maximum number of retry attempts.

# Create a table subset from the $site of all files returned with a .jpg extension
$table = $site.Links | 
Where-Object {
    $_.tagName -eq 'A' -and 
    $_.href.ToLower().EndsWith('jpg') 
}

<#
# Create a list of all href items from the table & call it $images
Enumerate all of the images - for troubleshooting purposes - can be removed
Assign and display using variable squeezing
#>
($images = $table.href)

<#
Check to make sure there are images available for download - arbitrarily 
picked more than 2 $images
#>
if ($images.count -gt 2) {
    Remove-Item ($path + '*.*') -Force
    ForEach ($image in $images) {
        # Due to occasional failures to transfer, wrap the BITS transfer in a while loop
        # re-initialize the exit counter for each new image
        $retryCount = 0
        while ($retryCount -le $MaxRetries){
            Try {
                Write-Verbose -Message "Downloading: $image" -Verbose

                if (![System.IO.File]::Exists($path + $image)) {
                    $StartBitsTransferSplat = @{
                        Source        = ($url + $image) 
                        Destination   = $path 
                        RetryInterval = 60
                    }
                    Start-BitsTransfer @StartBitsTransferSplat -ErrorAction Stop
                    Start-Sleep 2
                }

                # To get here, the transfer must have finished, so set the counter
                # greater than the max value to exit the loop
                $retryCount = $MaxRetries + 1
            } # End Try block

            Catch {
                $PSItem.Exception.Message
                $retryCount += 1
                Write-Warning -Message "Download of $image not complete or failed. Attempting retry #: $retryCount" -Verbose
            } # End Catch Block
            
        } # End While loop for retries

    } # End of loop over images

} # End of test for new images
else {
    Write-Warning -Message 'No images to download'
    $PSItem.Exception.Message
} # End of result for no new images

1

Ed Withers 18 Сен 2020 в 15:23

Вот комбинация предоставленного кода и цикла Do-While для повторной загрузки до 5 раз в случае возникновения ошибки.

$url  = 'https://www.nrlmry.navy.mil/archdat/global/stitched/MoS_2/navgem/wind_waves/latest/'
$path = 'D:\Temp\images\Wind_Waves\latest'
$site = Invoke-WebRequest -UseBasicParsing -Uri $url

# Create a table subset from the $site of all files returned with a .jpg extension
$table = $site.Links | 
Where-Object{
    $_.tagName -eq 'A' -and 
    $_.href.ToLower().EndsWith('jpg') 
}

<#
# Create a list of all href items from the table & call it $images
Enumerate all of the images - for troubleshooting purposes - can be removed
Assign and display using variable squeezing
#>

($images = $table.href)

 <# Check to make sure there are images available for download - arbitrarily 
    picked more than 2 $images #>

    if($images.count -gt 2)
    {
        Remove-Item ($path + '*.*') -Force
        ForEach ($image in $images)
        {
            # Create a Do-While loop to retry downloads up to 5 times if they fail
            $Stoploop = $false
            [int]$Retrycount = "0"
            do{
            Try
            {
                Write-Verbose -Message "Downloading: $image" -Verbose
    
                if(![System.IO.File]::Exists($path + $image))
                {
                    $StartBitsTransferSplat = @{
                        Source              = ($url + $image) 
                        Destination         = $path 
                        RetryInterval       = 60
                    }
                    Start-BitsTransfer @StartBitsTransferSplat -ErrorAction Stop
                    Start-Sleep 10
                    $Stoploop = $true
                }
    
                Get-BitsTransfer | 
                Where-Object {$PSItem.JobState -eq 'Transferred'} | 
                Complete-BitsTransfer
            }
            Catch
            {
                if ($Retrycount -gt 5){
                $PSItem.Exception.Message
                Write-Warning -Message "Download of $image not complete or failed." -Verbose
                $Stoploop = $true
                }
                else {
                Write-Host "Could not download the image, retrying..."
                Start-Sleep 10
                $Retrycount = $Retrycount + 1
                }
            }
        }
        While ($Stoploop -eq $false)
        }
    }
    else 
    {
        Write-Warning -Message 'No images to download'
        $PSItem.Exception.Message
    }

0

cpuguru 4 Сен 2020 в 14:43

Я не вижу в вашем коде обработки ошибок для возобновления / повторной попытки / перезапуска в случае сбоя.

  1. Это означает, почему в цикле или Get нет try / catch?
  2. Если Get выполняется для каждого задания загрузки в цикле, почему он находится вне цикла?

Загрузка — это значение по умолчанию для TransferType, поэтому указывать не нужно, в противном случае обычно возникает ошибка.

Итак, примерно так. Я проверил это, но ни разу не провалился. Тем не менее, у меня очень высокоскоростное интернет-соединение. Если вы делаете это внутри предприятия, граничные устройства (фильтры, прокси-серверы также могут замедлять работу, потенциально вызывая тайм-ауты).

$url  = 'https://www.nrlmry.navy.mil/archdat/global/stitched/MoS_2/navgem/wind_waves/latest/'
$path = 'D:\Temp\images\Wind_Waves\latest'
$site = Invoke-WebRequest -UseBasicParsing -Uri $url

# Create a table subset from the $site of all files returned with a .jpg extension
$table = $site.Links | 
Where-Object{
    $_.tagName -eq 'A' -and 
    $_.href.ToLower().EndsWith('jpg') 
}

<#
# Create a list of all href items from the table & call it $images
Enumerate all of the images - for troubleshooting purposes - can be removed
Assign and display using variable squeezing
#>
($images = $table.href)

<#
Check to make sure there are images available for download - arbitrarily 
picked more than 2 $images
#>
if($images.count -gt 2)
{
    Remove-Item ($path + '*.*') -Force
    ForEach ($image in $images)
    {
        Try
        {
            Write-Verbose -Message "Downloading: $image" -Verbose

            if(![System.IO.File]::Exists($path + $image))
            {
                $StartBitsTransferSplat = @{
                    Source              = ($url + $image) 
                    Destination         = $path 
                    RetryInterval       = 60
                }
                Start-BitsTransfer @StartBitsTransferSplat -ErrorAction Stop
                Start-Sleep 2
            }

            Get-BitsTransfer | 
            Where-Object {$PSItem.JobState -eq 'Transferred'} | 
            Complete-BitsTransfer
        }
        Catch
        {
            $PSItem.Exception.Message
            Write-Warning -Message "Download of $image not complete or failed. Attempting a resume/retry" -Verbose
            Get-BitsTransfer -Name $image | Resume-BitsTransfer

        }
    }
} 
else 
{
    Write-Warning -Message 'No images to download'
    $PSItem.Exception.Message
}

См. Файлы справки

Resume-BitsTransfer Модуль: bitstransfer Возобновляет задание передачи BITS.

# Example 1: Resume all BITS transfer jobs owned by the current user
Get-BitsTransfer | Resume-BitsTransfer

# Example 2: Resume a new BITS transfer job that was initially suspended
$Bits = Start-BitsTransfer -DisplayName "MyJob" -Suspended
Add-BitsTransfer -BitsJob $Bits  -ClientFileName C:\myFile -ServerFileName http://www.SomeSiteName.com/file1
Resume-BitsTransfer -BitsJob $Bits -Asynchronous

# Example 3: Resume the BITS transfer by the specified display name
Get-BitsTransfer -Name "TestJob01" | Resume-BitsTransfer

1

postanote 3 Сен 2020 в 16:53

powershell — БИТЫ Передача файла с несколькими доменами

Из того, что я узнал, я думаю, что проблема в том, как работает BitsTransfer. Он работает только в интерактивном режиме (то есть как зарегистрированный и активный пользователь). Из документации Microsoft:

  

При использовании командлетов * -BitsTransfer из процесса, который выполняется в   неинтерактивный контекст, такой как служба Windows, вы не можете   возможность добавлять файлы в задания BITS, что может привести к приостановленному состоянию.   Для продолжения работы, идентификатор, который использовался для создания   Передача работы должна быть авторизована. Например, при создании задания BITS   в сценарии PowerShell, который был выполнен как задание планировщика заданий,   Передача БИТОВ никогда не завершится, если задача планировщика задач   настройка «Запускать только при входе пользователя» включена. — Использование Windows PowerShell для создания BITS Transfer Jobs

После того, как я провел некоторое тестирование, это означает, что проблема не в междоменной аутентификации (которая, как я полагаю, у вас работают правильные трасты и т. д.), а в том, что биты используют логин для аутентификации.

Итак, мы получаем следующие виды проблем (используя contoso \ user, у которого нет доступа, и contoso /admin, который имеет) и указывая параметр credential:

  • Вы вошли как contoso \ user, Credential = contoso \ user, Start-BitsTransfer = Ошибка: не удается найти путь
    • Ожидаемое. У contoso \ user нет доступа.
  • Вы вошли как contoso \ user, Credential = contoso \ admin, Start-BitsTransfer = Ошибка: не удается найти путь
    • Это сообщение об ошибке, которое вы получаете. По сути, он не использует параметр Credential, как ожидалось.
  • Вы вошли как contoso \ admin, Credential = contoso \ admin, Start-BitsTransfer = Success.
    • Это ожидается. Параметр учетных данных даже не нужен.
  • Зарегистрируйтесь как contoso \ admin, Credential = contoso \ user, Start-BitsTransfer = Success.
    • Он был действительно сбит с толку, даже проверил журналы безопасности и обнаружил, что достаточно EventID 4624, он использовал текущего вошедшего в систему пользователя contoso \ admin, чтобы войти на удаленный компьютер для доступа к файлу, а не к учетным данным параметр.

Теперь попробуйте некоторые обходные пути runas. Пока вы вошли как contoso \ user:

  • runas /user:contoso\admin powershell.exe run Start-BitsTransfer = Error: Start-BitsTransfer : The operation being requested was not performed because the user has not logged on to the network. The specified service does not exist. (Exception from HRESULT: 0x800704DD)
    • Это было очень неожиданно. Даже пробовал с -Credential, тот же результат. Выполнение руны такое же, как если бы вы вошли в систему как другой пользователь, но я полагаю, вы можете нужен профиль … давайте попробуем это дальше.
  • runas /profile /user:contoso\admin powershell.exe run Start-BitsTransfer = Error: Start-BitsTransfer : The operation being requested was not performed because the user has not logged on to the network. The specified service does not exist. (Exception from HRESULT: 0x800704DD)
    • Это также было неожиданно … кончились пути к рунам … но есть еще один параметр рун — netonly:
  • runas /netonly /user:contoso\admin powershell.exe run Start-BitsTransfer = Error: Start-BitsTransfer : Access is denied.
    • Это, пожалуй, самое удивительное, потому что оно дает нам другое сообщение об ошибке.

Наконец, к обходному пути. Запустил следующее:

$c = Get-Credential -UserName 'consoso\admin'

net use \\server\c$
Start-BitsTransfer -Credential $c -source \\server\c$\test.txt -destination .
#Success

net use \\server\c$ /delete
#Error: Cannot find path

(конечно, используя contoso \ admin для команды net use)

Причина в том, что команда net use фактически регистрирует вас на сервере. Получив этот билет Kerberos, он работает, потому что он кэшировал учетные данные администратора и использует их для доступа к файлу. Для аналогичного решения см. copy-элемент с альтернативными учетными данными

По сути, похоже, что есть ошибка с передачей битов, и она не обрабатывает свойство -Credential, как ожидалось. Вместо этого кажется, что он всегда будет по умолчанию использовать авторизованного пользователя для аутентификации, за исключением того, что вы вручную выполняете команду net use для формирования вручнуюсоединение самостоятельно.

Как запустить скрипт для завершения загрузки BITS

Я бы предложил использовать модуль BitsTransfer, поскольку он предоставляет собственные методы PowerShell для работы с заданиями BITS. Чтобы начать работу, просто попросите PowerShell загрузить модуль BITS:

Import-Module BitsTransfer

Запустив Get-Command , чтобы увидеть, какие новые командлеты BITS были добавлены:

PS C:\> Get-Command  *-bits*

CommandType     Name
-----------     ----
Cmdlet          Add-BitsFile
Cmdlet          Complete-BitsTransfer
Cmdlet          Get-BitsTransfer
Cmdlet          Remove-BitsTransfer
Cmdlet          Resume-BitsTransfer
Cmdlet          Set-BitsTransfer
Cmdlet          Start-BitsTransfer
Cmdlet          Suspend-BitsTransfer

Тот, который вам больше всего интересен, будет Start-BitsTransfer :

Start-BitsTransfer -Source http://localhost/BigInstaller.msi

Командлет покажет индикатор выполнения на экране и дождитесь завершения загрузки — следующая команда в вашем скрипте не будет выполняться до завершения загрузки.

Для задач async вы можете добавить параметр -Asynchronous в командлет Start-BitsTransfer, который будет стоять в очереди загрузки и позволить ему работать в фоновом режиме. Вы можете управлять этими загрузками с помощью Get-BitsTransfer и Командлеты Complete-BitsTransfer .

PS C:\> Start-BitsTransfer -Source http://localhost/BigInstaller.msi -Async
JobId                   DisplayName    TransferType  JobState
-----                   -----------    ------------  --------
da7bab7f-fbfd-432d-8... BITS Transfer  Download      Connecting

PS C:\> Get-BitsTransfer
JobId                   DisplayName    TransferType  JobState
-----                   -----------    ------------  --------
da7bab7f-fbfd-432d-8... BITS Transfer  Download      Transferred

# finish and jobs that have transferred (e.g. write them to destination on disk)
PS C:\> Get-BitsTransfer | ? {$_.JobState -eq "Transferred"} | Complete-BitsTransfer

powershell — медиа защищаются от записи при использовании diskshadow.exe запустите-bitstransfer powershell cmdlet

Может быть много причин этого — во многих электронных письмах юрисдикции, или может быть бизнес-документы и таким образом должны быть сохранены для иногда x годы.

Во всяком случае Ваш клиент должен вернуться к реальности здесь. BCC ему бесполезен — если это по легальным причинам. Он должен получить бизнес-почтовую платформу с архивацией функций. Это исключает дешевку и достаточно интересный в значительной степени каждый MTA Linux.

Клиент должен:

  • Блокируют весь разговор SMTP на его брандмауэрах, чтобы удостовериться, что это не обойдено
  • Выполните всю электронную почту через надлежащую почтовую систему класса. Если он является слишком дешевым для оплаты за Exchange сам (SBS является относительно дешевым, серьезно), он может сделать так, например, путем аренды обменных почтовых ящиков от поставщика услуг хостинга С НАДЛЕЖАЩИМИ ФУНКЦИЯМИ АРХИВАЦИИ.

Это действительно спускается к потребности бизнес-платформы. GoDaddy, довольно очевидно, не обеспечивает такие функции, таким образом, клиент должен идти дальше. Как всегда в жизни, самое дешевое самое дрянное предложение не может просто сделать то, что необходимо 😉

Однако существуют также ethican соображения. В большей части юрисдикции это недопустимо для босса, чтобы сделать, добираются, читаемые копии без сотрудников, уведомляемых об этом (заставьте их подписать документ, им сообщают). В то время как босс имеет право прочитать все бизнес-электронные письма, уведомление о сотрудниках, что корреспонденция контролируется, может требоваться. Это отличается для надлежащего решения для архивирования, поскольку это просто удостоверяется, что электронные письма сохранены, но автоматически не предоставляет доступ им.

задан Sam 8 November 2011 в 10:07 Ссылка

Start-BitsTransfer (Биттрансфер) | Документы Майкрософт

Полезна ли эта страница?

Пожалуйста, оцените свой опыт

да Нет

Любая дополнительная обратная связь?

Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft. Политика конфиденциальности.

Представлять на рассмотрение

Создает задание передачи BITS.

В этой статье

Синтаксис

  Стартовые биты  Передача
     [-Асинхронный]
     [-Динамический]
     [-CustomHeadersWriteOnly]
     [-Аутентификация <Строка>]
     [-Учетные данные ]
     [-Описание ]
     [-HttpMethod ]
     [[-Назначение] ]
     [-ОтображаемоеИмя <Строка>]
     [-Приоритет ]
     [-TransferPolicy ]
     [-ACLFlags ]
     [-SecurityFlags ]
     [-UseStoredCredential ]
     [-ProxyAuthentication ]
     [-ProxyBypass ]
     [-ProxyCredential ]
     [-ProxyList ]
     [-ProxyUsage ]
     [-RetryInterval ]
     [-RetryTimeout ]
     [-MaxDownloadTime ]
     [-Источник] <Строка[]>
     [-Приостановленный]
     [-TransferType <Строка>]
     [-CustomHeaders ]
     [-NotifyFlags ]
     [-NotifyCmdLine ]
     [-CertStoreLocation ]
     [-CertStoreName ]
     [-CertHash <байт[]>]
     [-Что, если]
     [-Подтверждать]
     [<Общие параметры>]   

Описание

Командлет Start-BitsTransfer создает задание передачи фоновой интеллектуальной службы передачи (BITS) для передачи одного или нескольких файлов между клиентским компьютером и сервером.Параметр TransferType указывает направление передачи. По умолчанию после того, как командлет начинает передачу, командная строка недоступна, пока передача не будет завершена или пока передача не войдет в состояние ошибки. Если состояние возвращенного объекта BitsJob — Ошибка, код ошибки и описание содержатся в объекте и могут использоваться для анализа.

Командлет Start-BitsTransfer поддерживает загрузку нескольких файлов с сервера на клиентский компьютер, но обычно не поддерживает загрузку нескольких файлов с клиентского компьютера на сервер.Если вам нужно загрузить более одного файла, вы можете использовать командлет Import-Csv , чтобы направить выходные данные в командлет Add-BitsFile для загрузки нескольких файлов. Или, если вам нужно загрузить более одного файла, рассмотрите CAB-файл (.cab) или сжатый файл (.zip).

Примеры

Пример 1. Создание задания передачи BITS для загрузки файла

  PS C:\> Start-BitsTransfer -Source "http://server01/servertestdir/testfile1.txt" -Destination "c:\clienttestdir\testfile1.текст"  

Эта команда создает задание передачи BITS, которое загружает файл с сервера. Локальное и удаленное имена файла указываются в параметрах Source и Destination . Поскольку тип передачи по умолчанию — Загрузка, файл http://Server01/servertestdir/testfile1.txt передается в C:\clienttestdir\testfile1.txt на клиенте. Командная строка возвращается, когда передача файла завершена или когда она переходит в состояние ошибки.

Когда вы загружаете файлы в местоположение HTTP, для параметра TransferType должно быть установлено значение Upload .

Поскольку командлет Start-BitsTransfer предполагает, что первый параметр является источником, а второй параметр — приемником, когда значение не указано, эту команду можно упростить следующим образом:

Start-BitsTransfer "http://server01/servertestdir/testfile1.txt" "c:\clienttestdir\testfile1.txt"

Пример 2. Создание заданий передачи BITS для загрузки нескольких файлов

  PS C:\> Список файлов Import-CSV.текст | Start-BitsTransfer  

Эта команда создает задания передачи BITS, которые загружают несколько файлов с сервера.

Команда импортирует расположение исходного и целевого файлов, а затем передает их команде Start-BitsTransfer . Команда Start-BitsTransfer создает новое задание передачи BITS для каждого из файлов в filelist.txt , а затем одновременно передает их клиенту.

Содержимое списка файлов.txt напоминают следующую информацию:

Источник, Назначение http://server01/servertestdir/testfile1.txt, c:\clienttestdir\testfile1.txt http://server01/servertestdir/testfile2.txt, c:\clienttestdir\testfile2.txt http://server01/servertestdir/testfile3.txt, c:\clienttestdir\testfile3.txt http://server01/servertestdir/testfile4.txt, c:\clienttestdir\testfile4.txt

Примечание: Первая строка файла должна содержать заголовок Source, Destination, как в примере.

Пример 3. Создание задания передачи BITS для загрузки файла

  PS C:\> Start-BitsTransfer -Source "c:\clienttestdir\testfile1.txt" -Destination "http://server01/servertestdir/testfile1.txt" -TransferType Upload  

Эта команда создает задание передачи BITS, которое загружает файл на сервер. Локальное и удаленное имена файла указываются в параметрах Source и Destination . Поскольку типом передачи по умолчанию является загрузка, для параметра TransferType должно быть установлено значение Upload . Файл C:\clienttestdir\testfile1.txt на клиенте переносится на http://Server01/servertestdir/testfile1.текст . Командная строка возвращается, когда передача файла завершена или переходит в состояние ошибки.

Командлет Start-BitsTransfer загружает несколько файлов с сервера на клиентский компьютер, но обычно не загружает несколько файлов с клиентского компьютера на сервер. Это ограничение можно обойти, используя командлет Import-Csv для передачи вывода командлету Start-BitsTransfer . Если вам нужно загрузить более одного файла, вы также можете использовать файл .cab или ZIP-файл.

Поскольку командлет Start-BitsTransfer предполагает, что первый параметр является источником, а второй параметр — приемником, когда значение не указано, эту команду можно упростить следующим образом:

Start-BitsTransfer "c:\clienttestdir\testfile1.txt" "http://server01/servertestdir/testfile1.txt" -TransferType Upload

Пример 4. Создание задания передачи BITS для загрузки нескольких файлов

  PS C:\> Start-BitsTransfer -Source "http://server01/servertestdir/testfile1.txt", "http://server01/servertestdir/testfile2.txt" - Назначение "c:\clienttestdir\testfile1.txt", "c:\clienttestdir\testfile2.txt"  

Эта команда создает задание передачи BITS, которое загружает несколько файлов с сервера.

Локальные и удаленные имена файлов указаны в параметрах Source и Destination . Поскольку параметр TransferType по умолчанию имеет значение Download, файл http://Server01/servertestdir/testfile1.txt и http://Server01/servertestdir/testfile2.txt файлы переносятся в C:\clienttestdir\testfile1.txt и C:\clienttestdir\testfile2.txt на клиентском компьютере. Командная строка возвращается, когда передача файла завершена или переходит в состояние ошибки.

Пример 5. Создание задания передачи BITS, которое загружает файл с использованием определенного набора учетных данных

  PS C:\> $Cred = Get-Credential
PS C:\> Start-BitsTransfer -DisplayName MyJob -Credential $Cred -Source "http://server01/servertestdir/testfile1.txt"-Destination "c:\clienttestdir\testfile1.txt"  

В этом примере создается задание передачи BITS, которое загружает файл с сервера с использованием определенного набора учетных данных.

Первая команда получает набор учетных данных от пользователя, вызывая командлет Get-Credential . Возвращенный объект PSCredential сохраняется в переменной $Cred.

Вторая команда использует параметр Credential для передачи объекта PSCredential , который хранится в переменной $Cred, командлету Start-BitsTransfer .Создается новое задание передачи BITS, которое загружает файл http://server01/servertestdir/testfile1.txt на клиент. Указанные учетные данные используются для аутентификации пользователя на сервере. Кроме того, необязательный параметр DisplayName используется для присвоения заданию передачи BITS уникального имени.

Пример 6. Создание заданий передачи BITS для загрузки нескольких файлов

  PS C:\> Import-CSV filelist.txt | Start-BitsTransfer -Asynchronous -Priority Normal  

Эта команда создает задания передачи BITS, которые загружают несколько файлов с сервера.Файлы загружаются последовательно, но становятся доступными сразу после завершения задания на передачу.

Команда импортирует расположение исходного и целевого файлов, а затем передает их команде Start-BitsTransfer . Команда Start-BitsTransfer создает новое задание передачи BITS для каждого из файлов в файле filelist.txt, а затем последовательно передает их клиенту.

Содержимое файла filelist.txt похоже на следующую информацию:

Источник, Назначение http://server01/servertestdir/testfile1.txt, c:\clienttestdir\testfile1.txt http://server01/servertestdir/testfile2.txt, c:\clienttestdir\testfile2.txt http://server01/servertestdir/testfile3.txt, c:\clienttestdir\testfile3.txt http://server01/servertestdir/testfile4.txt, c:\clienttestdir\testfile4.txt

Примечание: Первая строка файла должна содержать заголовок Source, Destination, как в примере.

Пример 7. Создание задания передачи BITS для загрузки нескольких файлов

  PS C:\> Start-BitsTransfer -Source C:\clientsourcedir\*.txt -Destination c:\clientdir\ -TransferType Загрузка  

В предыдущем примере команда Start-BitsTransfer создает новое задание передачи BITS. Все файлы добавляются в это задание и последовательно передаются клиенту.

Примечание

Путь назначения не может использовать подстановочные знаки. Путь назначения поддерживает относительные каталоги, корневые пути или неявные каталоги (то есть текущий каталог). Целевые файлы нельзя переименовывать с помощью подстановочного знака.Кроме того, URL-адреса HTTP и HTTPS не работают с подстановочными знаками. Подстановочные знаки действительны только для путей UNC и локальных каталогов.

Пример 8. Создание заданий передачи BITS для загрузки нескольких файлов

  PS C:\> Import-CSV filelist.txt | Start-BitsTransfer -TransferType Загрузить  

Эта команда создает задания передачи BITS, которые загружают несколько файлов на сервер.

Команда импортирует расположение исходного и целевого файлов, а затем передает их команде Start-BitsTransfer .Команда Start-BitsTransfer создает новое задание передачи BITS для каждого из файлов в файле filelist.txt, а затем одновременно передает их на сервер.

Содержимое файла filelist.txt похоже на следующую информацию:

Источник, Назначение c:\clienttestdir\testfile1.txt, http://server01/servertestdir/testfile1.txt c:\clienttestdir\testfile2.txt, http://server01/servertestdir/testfile2.txt c:\clienttestdir\testfile3.txt, http://server01/servertestdir/testfile3.текст c:\clienttestdir\testfile4.txt, http://server01/servertestdir/testfile4.txt

Примечание: Первая строка файла должна содержать заголовок Source, Destination, как в примере.

Пример 9: Загрузка файла с сервера в сети клиенту в другой сети, подключенному через прокси-сервер

  PS C:\> Start-BitsTransfer -Source .\Patch0416.msu -Destination $env:temp\Patch0416.msu -ProxyUsage Override -ProxyList BitsProxy:8080 -ProxyCredential Server01\Admin01  

Эта команда использует командлет Start-BitsTransfer для копирования файла исправления с сервера в одной сети на клиент в другой сети, когда сети соединены только через прокси-сервер.

Этот сценарий возникает, когда подключенный к Интернету сервер загружает файлы, а затем распространяет их на компьютеры в отключенных или изолированных сетях, не имеющих доступа к Интернету.

BITS может автоматически определять настройки прокси-сервера. Однако если прокси-серверы не настроены на автоматическое обнаружение, вы можете переопределить механизм автоматического обнаружения и указать прокси-сервер явно, как показано в этом примере.

Команда использует параметр Source , чтобы указать расположение исправления на сервере, и параметр Destination , чтобы указать предполагаемое расположение исправления на клиентском компьютере.Он использует параметр ProxyUsage со значением Override , чтобы переопределить механизм автоматического обнаружения прокси-сервера. Для идентификации прокси-сервера используется параметр ProxyList . Значение параметра ProxyList — это URI в формате . Наконец, он использует параметр ProxyCredential для указания учетных данных администратора, имеющего разрешение на подключение к прокси-серверу.

Параметры

-ACLFlags

Указывает информацию о владельце и списке управления доступом (ACL), которую необходимо поддерживать для задания передачи.Укажите одно или несколько из следующих значений:

  • o: Копировать информацию о владельце вместе с файлом.
  • г: скопировать информацию о группе в файл.
  • d: Скопируйте информацию списка управления доступом на уровне пользователей (DACL) вместе с файлом.
  • s: Скопируйте информацию списка управления доступом к системе (SACL) вместе с файлом.
Тип: ACLFlagValue
Позиция: Названы
Значение по умолчанию: None
Accept ввод трубопровода: ложных
Принимать подстановочные символы: Ложные

— Асинхронный

Указывает, что командлет создает и обрабатывает задание передачи BITS в фоновом режиме.Командная строка снова появляется сразу после создания задания передачи BITS. Возвращенный объект BitsJob можно использовать для отслеживания состояния и хода выполнения.

SwitchParameter
Положение: Название
None
False
Принять персональные знаки: False

— Аутентификация

Указывает механизм проверки подлинности, который будет использоваться на сервере.Допустимые значения для этого параметра:

  • Basic : Basic — это схема, в которой имя пользователя и пароль отправляются в виде открытого текста на сервер или прокси.

  • Дайджест : Дайджест — это схема запроса-ответа, в которой для запроса используется заданная сервером строка данных.

  • Ntlm : NT LAN Manager (NTLM) — это схема запроса-ответа, которая использует учетные данные пользователя для аутентификации в сетевой среде на базе Windows.

  • Согласование (по умолчанию): Согласование — это схема запроса-ответа, которая согласовывает с сервером или прокси-сервером, чтобы определить, какую схему использовать для аутентификации. Например, значение этого параметра позволяет согласованию определить, используется ли протокол Kerberos или NTLM.

  • Passport : Passport — это централизованная служба проверки подлинности, предоставляемая корпорацией Майкрософт, которая предлагает единый вход для участников сайтов.

Тип: String
Принимаемые значения: Основные, Дайджесты, NTLM, Договорные, Паспорт
Должность:
Значение по умолчанию: None
Принять ввод конвейера: False
Принять подстановочные знаки: False

-CertHash

Задает хэш SHA1, идентифицирующий сертификат.

Байт []
Положение: Название
None
False
Принять персонажей подстановки: Ложь

— CertStoreLocation

Указывает расположение хранилища сертификатов, используемое для поиска сертификата. Допустимые значения:

.
  • ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ
  • ЛОКАЛЬНАЯ_МАШИНА
  • ТЕКУЩАЯ_СЛУЖБА
  • УСЛУГИ
  • ПОЛЬЗОВАТЕЛЕЙ
  • CURRENT_USER_GROUP_POLICY
  • ЛОКАЛЬНАЯ_МАШИНА_ГРУППА_ПОЛИТИКИ
  • ЛОКАЛЬНАЯ_МАШИНА_ENTERPRISE
Тип: CertStoreLocationValue
Позиция: Названы
Значение по умолчанию: None
Accept ввод трубопровода: ложных
Принимать подстановочные символы: Ложные

-CertStoreName

Указывает имя хранилища сертификатов.Допустимые значения:

.
  • ЦС: сертификаты центра сертификации
  • МГ: Персональные сертификаты
  • КОРЕНЬ: корневые сертификаты
  • SPC: сертификат издателя программного обеспечения
Тип: Строка
Должность:
Название
None None
Принимайте ввод трубопровода: False
Принять подстановочные знаки:

-Подтвердить

Запрашивает подтверждение перед запуском командлета.

Тип: SwitchParameter
Синонимы: сравни
Позиция: Названный
Значение по умолчанию: Ложные
Accept входной трубопровод: Ложные
Принимать подстановочные знаки: False

-Учетные данные

Указывает учетные данные, используемые для проверки подлинности пользователя на сервере, указанном в значении параметра Source .По умолчанию используется текущий пользователь.

Введите имя пользователя, например «User01», «Domain01\User01» или «[email protected]». Или используйте командлет Get-Credential , чтобы создать значение для этого параметра. При вводе имени пользователя запрашивается пароль.

Pscredential
Должность: Название
None
Принять трубопроводный вход: False
Принять персональные знаки: False

-Пользовательские заголовки

Указывает один или несколько настраиваемых заголовков HTTP для включения в запрос к серверу.Укажите массив строк.

string []
Должность: Название
None
Принять трубопроводный вход: False
Принять персональные знаки: Ложь

-CustomHeadersWriteOnly

Указывает, что настраиваемые заголовки HTTP для этого задания доступны только для записи.

Используйте этот параметр, если ваши настраиваемые заголовки содержат информацию о безопасности.Другие программы на том же компьютере не могут прочитать заголовок. Процесс BITS может считывать заголовки и отправлять их по HTTP-соединению.

Вы не можете изменить это значение для задания после того, как установили для заголовков доступ только для записи.

SwitchParameter
Положение: Название
None
False
Принять персональные знаки: False

-Описание

Описывает задание передачи BITS.Описание ограничено 1024 символами.

string
Должность: Название
None
Принимайте ввод трубопроводов: False
Принять подстановочные знаки: False

— Пункт назначения

Задает массив, содержащий место назначения и имена файлов, которые вы хотите передать.Имена назначения сочетаются с соответствующими именами исходных файлов. Например, первое имя файла, указанное в параметре Source , соответствует первому имени файла в параметре Destination , а второе имя файла в параметре Source соответствует второму имени файла в параметре Destination . . Параметры Source и Destination должны иметь одинаковое количество элементов; в противном случае команда выдает ошибку.

Строка []
Должность: 1
None
Принять трубопроводный вход: True
Принять персональные знаки: Ложь

— DisplayName

Указывает отображаемое имя для задания передачи BITS. Отображаемое имя обеспечивает удобный способ различать задания передачи BITS.

string
Должность: Название
None
Принимайте ввод трубопроводов: False
Принять подстановочные знаки: False

-Динамический

Указывает, что передача использует динамическую настройку.

SwitchParameter
Положение: Название
None
False
Принять персональные знаки: False

— HTTP-метод

Указывает метод передачи, отличный от метода GET по умолчанию.Если вы укажете GET, параметр не будет действовать.

Если вы укажете метод, задание получит приоритет переднего плана, который нельзя изменить.

string
Должность: Название
None
Принимайте ввод трубопроводов: False
Принять подстановочные знаки: False

-MaxDownloadTime

Указывает максимальное время в секундах для передачи файлов в задании.Значение по умолчанию — 7 776 000 секунд или 90 дней.

INT32
Должность: Позиция: Название
None
False
Принять символы подстановки: False

-NotifyCmdLine

Указывает программу, которая должна запускаться после завершения задания или возникновения ошибки. Программа запускается в контексте пользователя, запускающего этот командлет.

Укажите имя программы и любые параметры в виде массива строк.

string []
Должность: Название
None
Принять трубопроводный вход: False
Принять персональные знаки: Ложь

-NotifyFlags

Указывает тип уведомлений о событиях, которые вы хотите получать, например о событиях переноса задания.Допустимые значения:

.
  • 1: Создает событие, когда все файлы в задании переданы.
  • 2: Создает событие при возникновении ошибки.
  • 4: Отключает уведомления.

Значение по умолчанию: 1|2.

Тип: NotifyFlagValue
Позиция: Названы
Значение по умолчанию: None
Accept ввод трубопровода: ложных
Принимать подстановочные символы: Ложные

-Приоритет

Устанавливает приоритет задания передачи BITS, который влияет на использование полосы пропускания.Допустимые значения для этого параметра:

  • Передний план (по умолчанию): перевод задания на передний план. Передачи переднего плана конкурируют за пропускную способность сети с другими приложениями, что может препятствовать работе пользователя в сети в целом. Однако, если командлет Start-BitsTransfer используется в интерактивном режиме, это, вероятно, лучший вариант. Это самый высокий уровень приоритета.

  • Высокий : Переводит задание в фоновый режим с высоким приоритетом.Фоновые передачи используют свободную полосу пропускания сети клиентского компьютера для передачи файлов.

  • Обычный : Задание передается в фоновом режиме с обычным приоритетом. Фоновые передачи используют свободную полосу пропускания сети клиентского компьютера для передачи файлов.

  • Низкий : Задание передается в фоновом режиме с низким приоритетом. Фоновые передачи используют свободную полосу пропускания сети клиента для передачи файлов. Это самый низкий уровень фонового приоритета.

Тип: String Принимаемые значения: Принимаемые значения: На переднем плане
Должность: Название
Значение по умолчанию: На переднем планом
Принимают трубопровод ввод: False
Принимать подстановочные знаки: False

-ProxyAuthentication

Указывает механизм проверки подлинности для использования на веб-прокси.Допустимые значения для этого параметра:

  • Basic : Basic — это схема, в которой имя пользователя и пароль отправляются в открытом виде на сервер или прокси-сервер.

  • Дайджест : Дайджест — это схема запроса-ответа, в которой для запроса используется заданная сервером строка данных.

  • Ntlm : NTLM — это схема запроса-ответа, которая использует учетные данные пользователя для аутентификации в сетевой среде на базе Windows.

  • Согласование (по умолчанию): Согласование — это схема запроса-ответа, которая согласовывает с сервером или прокси-сервером, чтобы определить, какую схему использовать для аутентификации. Например, значение этого параметра позволяет согласованию определить, используется ли протокол Kerberos или NTLM.

  • Passport : Passport — это централизованная служба проверки подлинности, предоставляемая корпорацией Майкрософт, которая предлагает единый вход для участников сайтов.

Тип: String
Принимаемые значения: Основные, Дайджесты, NTLM, Договорные, Паспорт
Должность:
Значение по умолчанию: None
Принять ввод конвейера: False
Принять подстановочные знаки: False

-ProxyBypass

Задает список имен хостов для прямого подключения.Хосты в списке проверяются по порядку, пока не будет установлено успешное соединение. Если указать этот параметр, командлет обходит прокси-сервер. Если этот параметр используется, для параметра ProxyUsage должно быть установлено значение Override ; в противном случае возникает ошибка.

string []
Должность: Название
None
Принять трубопроводный вход: False
Принять персональные знаки: Ложь

-ProxyCredential

Указывает учетные данные для аутентификации пользователя на прокси-сервере.Вы можете использовать командлет Get-Credential , чтобы создать значение для этого параметра.

Pscredential
Должность: Название
None
Принять трубопроводный вход: False
Принять персональные знаки: False

-Проксилист

Указывает список используемых прокси.Прокси в списке пробуются по порядку, пока не будет установлено успешное соединение. Если этот параметр указан и ProxyUsage имеет значение, отличное от Override , командлет выдает ошибку.

Тип: URI [] URI []
Должность:
Название Название
None
Принимайте ввод трубопровода: False
Принять персональные знаки: Ложь

— Использование прокси

Указывает параметры использования прокси.Допустимые значения для этого параметра:

  • SystemDefault (значение по умолчанию): используйте системные настройки прокси-сервера по умолчанию.

  • NoProxy : Не использовать прокси для передачи файлов. Используйте этот параметр при передаче файлов в локальной сети (LAN).

  • AutoDetect : Автоматическое определение настроек прокси. BITS определяет параметры прокси для каждого файла в задании.

  • Переопределить : Укажите используемые прокси или серверы.Если также указан параметр ProxyList , используются прокси из этого списка. Если также указан параметр ProxyBypass , используются серверы из этого списка. В обоих случаях используется первый член списка. Если первый член недоступен, последующие члены пробуются до тех пор, пока не будет успешно установлен контакт с членом.

Тип: Строка
Принимаемые значения: Systemdefault, Noproxy, AutodeTect, переопределить
Название
Значение по умолчанию: None
Принять трубопровод ввод: False
Принимать подстановочные знаки: False

-RetryInterval

Указывает минимальное время в секундах, в течение которого BITS ожидает перед попыткой передачи файла после того, как BITS обнаруживает временную ошибку.Минимально допустимое значение составляет 60 секунд. Если это значение превышает значение RetryTimeout из объекта BitsJob , BITS не повторяет попытку передачи. Вместо этого BITS устанавливает состояние задания передачи BITS в состояние «Ошибка».

Значение по умолчанию — 600 секунд (10 минут).

INT32
Должность: Позиция: Название
None
False
Принять символы подстановки: False

-RetryTimeout

Указывает время в секундах, в течение которого BITS пытается передать файл после возникновения первой временной ошибки.Установка периода повторных попыток равным 0 предотвращает повторные попытки и переводит задание в состояние BG_JOB_STATE_ERROR при возникновении ошибки. Если значение периода повтора превышает параметр групповой политики JobInactivityTimeout (по умолчанию 90 дней), BITS отменяет задание после превышения параметра групповой политики JobInactivityTimeout.

Значение по умолчанию — 1 209 600 секунд (14 дней).

INT32
Должность: Позиция: Название
None
False
Принять символы подстановки: False

— Флаги безопасности

Указывает флаги безопасности для HTTP-запроса.

Можно установить следующие флаги, начиная с младшего бита:

  • 1: включить проверку CRL.
  • 2: игнорировать неправильные общие имена в сертификате сервера.
  • 3: игнорировать неправильные даты в сертификате сервера.
  • 4: Игнорировать неправильные центры сертификации в сертификате сервера.
  • 5: игнорировать неправильное использование сертификата сервера.
  • 12: разрешить перенаправление с HTTPS на HTTP.

Используйте биты с 9 по 11 для реализации вашей политики перенаправления:

  • 0,0,0: перенаправления разрешены автоматически.
  • 0,0,1: удаленное имя обновляется, если происходит перенаправление. -0,1,0: BITS завершает работу, если происходит перенаправление.
Тип: SecurityFlagValue
Должность:
None NOTE
Принять трубопроводный вход: False
Принять персональные знаки:

— Источник

Указывает исходное расположение и имена файлов, которые вы хотите передать.Имена исходных файлов сочетаются с соответствующими именами файлов назначения. Например, первое имя файла, указанное в параметре Source , соответствует первому имени файла в параметре Destination , а второе имя файла в параметре Source соответствует второму имени файла в параметре Destination . . Параметры Source и Destination должны иметь одинаковое количество элементов; в противном случае команда выдает ошибку.Вы можете использовать стандартные подстановочные знаки, такие как звездочка (*) и вопросительный знак (?). Или вы можете использовать оператор диапазона, такой как «[a-r]».

9
string []
Должность: 0 0
None
NOTE
Принять трубопроводный вход: True
Принять подстановочные знаки: Ложный

— Подвесной

Указывает, что командлет приостанавливает задание передачи BITS.Если параметр Suspended не указан, задание автоматически начинает задание передачи. Если указан параметр Suspended , командная строка возвращается сразу после создания задания передачи BITS. Вы можете использовать командлет Resume-BitsTransfer , чтобы запустить задание переноса.

SwitchParameter
Положение: Название
None
False
Принять персональные знаки: False

-Политика передачи

Указывает состояния стоимости сети, в которых разрешено планировать передачу.Текущее состояние стоимости сети — это битовая маска, указывающая виды расходов, которые были бы понесены, если бы передача была запланирована в это время. Это состояние стоимости представляет собой битовую маску; если бит, соответствующий текущему состоянию стоимости сети, установлен, передача может быть запланирована. Если бит, соответствующий текущему состоянию стоимости сети, не установлен, передача игнорируется в целях планирования. Вы можете отправить любое из именованных значений, перечисленных здесь, или сложить их вместе, чтобы получить пользовательское значение.

Допустимые значения для этого параметра:

  • Без ограничений (или неизвестно) : 0x00000001 : состояние стоимости для этой сети неизвестно.

  • Capped : 0x00000002 : состояние стоимости для этой сети — план с ограничением или план с ограничением использования данных.

  • BelowCap : 0x00000004 : состояние стоимости для этой сети ниже предела тарифного плана.

  • NearCap : 0x00000008 : состояние стоимости для этой сети близко к пределу тарифного плана.

  • OverCapCharged : 0x00000010 : состояние стоимости для этой сети превышает ограничение плана данных, и такое использование оплачивается.

  • OverCapThrottled : 0x00000020 : состояние стоимости для этой сети превышает ограничение плана данных, и такое использование регулируется.

  • UsageBased : 0x00000040 : состояние стоимости для этой сети оплачивается на основе использования.

  • Роуминг : 0x00000080 : состояние стоимости для этой сети включает плату за роуминг.Состояние стоимости также включает один параметр (IgnoreCongestion) и набор стандартных политик (Uncosted, Standard, NoSurcharge, NotRoaming и Always), которые представляют собой комбинации дискретных значений битов.

  • IgnoreCongestion : 0x80000000 : задание можно запланировать, даже если сетевой провайдер сообщает о перегрузке сети.

  • PolicyUnrestricted : 0x80000021 : набор состояний стоимости, которые не используют квоту плана с ограничениями или влекут за собой дополнительные расходы.

  • Стандарт : 0x80000067 : набор состояний стоимости, подходящих для передачи со средним приоритетом.

  • NoSurcharge : 0x8000006f : набор состояний стоимости, за использование которых не взимается дополнительная плата.

  • NotRoaming : 0x8000007f : набор состояний стоимости, исключающих состояние роуминга.

  • Всегда : 0x800000ff : набор всех состояний стоимости.

Состояние стоимости также включает один параметр (IgnoreCongestion) и набор стандартных политик (Always, NotRoaming, NoSurcharge, Standard и Uncosted), которые представляют собой комбинации дискретных значений битов.

ChastStates
Принимаемые значения: None, неограниченные, ограничены, подкрепленные, приведенные ниже, находятся в неразрешенные, перекрестные, переплетенные, overcapthrotded, использование Должность: по имени
Значение по умолчанию: None
Принимайте вход в трубопровод: False
Принять подстановочные знаки: False

-Transfertype

Указывает тип задания передачи BITS.Допустимые значения для этого параметра:

  • Загрузка (по умолчанию): указывает, что задание передачи загружает файлы на клиентский компьютер.

  • Загрузка : Указывает, что задание передачи загружает файл на сервер.

  • UploadReply : Указывает, что задание передачи загружает файл на сервер и получает ответный файл с сервера.

Тип: Строка
Загрузка: Скачать, Загрузить, Загрузить Загрузить:
Должность
Значение по умолчанию: NOTE
Примите вклад в действие трубопровод: False
Принимать подстановочные знаки: False

-UseStoredCredential

Указывает, что учетные данные, хранящиеся в диспетчере учетных данных Windows, должны использоваться для проверки подлинности, когда это требуется для указанного типа целевого сервера.Если этот параметр не указан и сервер требует проверки подлинности, необходимо включить явные учетные данные с помощью параметров Credential или ProxyCredential . Этот параметр является параметром флага, значения которого можно суммировать для создания желаемого поведения.

Допустимые значения для этого параметра:

  • Нет : Используйте только учетные данные, предоставленные параметрами Credential или ProxyCredential .Это поведение по умолчанию, если параметр не указан.

  • Прокси-сервер : учетные данные, хранящиеся в диспетчере учетных данных Windows, используются для проверки подлинности для любого прокси-сервера, требующего проверки подлинности. Если никакие учетные данные в диспетчере учетных данных Windows не соответствуют прокси-серверу, которому требуется проверка подлинности, необходимо указать учетные данные с помощью параметра ProxyCredential .

  • Сервер : это значение не поддерживается и приводит к ошибке, если оно указано.

Тип: AuthenticateTargetValue
None, Сервер, Прокси
Должность: Должность: На
None
Принимайте ввод трубопроводов: False
Принимать подстановочные знаки: False

-WhatIf

Показывает, что произойдет, если командлет запустится.Командлет не запущен.

Тип: SwitchParameter
Синонимы: Wi
Позиция: Названный
Значение по умолчанию: Ложные
Accept входной трубопровод: Ложные
Принимать подстановочные знаки: False

Входы

Нет

Этот командлет не принимает ввод.

Выходы

Microsoft.BackgroundIntelligentTransfer.Management.BitsJob

При вызове с параметром Асинхронный этот командлет передает в качестве выходных данных объект BitsJob , связанный с новым заданием передачи BITS. В противном случае вывод не создается.

Примечания

  • Вы можете отменить задание передачи, которое выполняется в синхронном режиме, нажав CTRL+C.

    Если служба BITS остановлена ​​во время задания синхронной передачи файлов, задание передачи файлов завершится ошибкой, и задание передачи файлов не будет удалено из очереди BitsTransfer.Вы можете просмотреть задание на передачу файлов, которое остается в очереди BitsTransfer, с помощью командлета Get-BitsTransfer . Задание на передачу файла, оставшееся в очереди BitsTransfer, можно удалить с помощью командлета Remove-BitsTransfer . После перезапуска службы BITS задание передачи файлов восстанавливается и возобновляет задание передачи файлов, если только задание передачи файлов не было удалено в промежутке.

Использование Windows PowerShell для создания заданий передачи BITS — приложения Win32

  • Статья
  • 6 минут на чтение
Полезна ли эта страница?

Пожалуйста, оцените свой опыт

да Нет

Любая дополнительная обратная связь?

Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

Вы можете использовать командлеты PowerShell для создания синхронных и асинхронных заданий передачи фоновой интеллектуальной службы (BITS).

Во всех примерах в этом разделе используется командлет Start-BitsTransfer. Чтобы использовать командлет, обязательно сначала импортируйте модуль.Чтобы установить модуль, выполните следующую команду: Import-Module BitsTransfer. Для получения дополнительных сведений введите Get-Help Start-BitsTransfer в командной строке PowerShell.

Важно

При использовании командлетов *-BitsTransfer из процесса, работающего в неинтерактивном контексте, например службы Windows, вы не сможете добавлять файлы в задания BITS, что может привести к приостановке. Для выполнения задания необходимо войти в систему с удостоверением, которое использовалось для создания задания переноса.Например, при создании задания BITS в сценарии PowerShell, который выполнялся как задание планировщика заданий, передача BITS никогда не будет завершена, если не включен параметр задания планировщика заданий «Выполнять только при входе пользователя в систему».

 

Чтобы создать задание синхронной передачи BITS

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

Примечание

Символ серьезного ударения (`) используется для обозначения разрыва строки.

 

В предыдущем примере локальное и удаленное имена файла указаны в параметрах Source и Destination соответственно. Командная строка возвращается, когда передача файла завершена или когда она переходит в состояние ошибки.

Тип передачи по умолчанию — Загрузка. Когда вы загружаете файлы в расположение HTTP, для параметра TransferType должно быть установлено значение Upload.

Поскольку для командлета Start-BitsTransfer применяется позиция параметра, имена параметров не нужно указывать для параметров Source и Destination.Поэтому эту команду можно упростить следующим образом.

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

Чтобы создать задание синхронной передачи BITS с несколькими файлами

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

В предыдущем примере команда Start-BitsTransfer создает новое задание передачи BITS. Все файлы добавляются в это задание и последовательно передаются клиенту.

Примечание

Путь назначения не может использовать подстановочные знаки. Путь назначения поддерживает относительные каталоги, корневые пути или неявные каталоги (то есть текущий каталог). Целевые файлы нельзя переименовывать с помощью подстановочного знака. Кроме того, URL-адреса HTTP и HTTPS не работают с подстановочными знаками. Подстановочные знаки действительны только для путей UNC и локальных каталогов.

 

Чтобы создать задание синхронной передачи BITS и указать учетные данные для удаленного сервера

  Start-BitsTransfer -DisplayName MyJob -Credential Username\Domain `
-Источник https://server01/servertestdir/testfile1.txt — место назначения c:\clienttestdir\testfile1.txt `
-ProxyUsage Override -ProxyList @(https://proxy1, 123.24.21.23, proxy3)
  

В предыдущем примере пользователь создает задание передачи BITS для загрузки файла с сервера, для которого требуется проверка подлинности. У пользователя запрашиваются учетные данные, и параметр Credential передает объект учетных данных командлету Start-BitsTransfer. Пользователь задает явный прокси-сервер, и задание передачи BITS использует только прокси-серверы, определенные параметром ProxyList .Параметр DisplayName дает заданию передачи BITS уникальное отображаемое имя.

Чтобы создать задание синхронной передачи BITS из CSV-файла

  Import-CSV filelist.txt | Start-BitsTransfer -TransferType Загрузить
  

Примечание

«|» является символом трубы.

 

В предыдущем примере пользователь создает задание передачи BITS, которое загружает несколько файлов с клиента. Командлет Import-CSV импортирует расположение исходного и целевого файлов и передает их команде Start-BitsTransfer.Команда Start-BitsTransfer создает новое задание передачи BITS для каждого файла, добавляет файлы в задание, а затем последовательно передает их на сервер.

Содержимое файла Filelist.txt должно быть в следующем формате:

  Источник, Назначение
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.текст
c:\clienttestdir\testfile4.txt, https://server01/servertestdir/testfile4.txt
  

Чтобы создать задание асинхронной передачи BITS

  $Job = Start-BitsTransfer-Source https://Server1.TrustedDomain.com/File1.zip `
       -Назначение d:\temp\downloads\ -Асинхронный

while (($Job.JobState -eq "Передача") -or ($Job.JobState -eq "Подключение")) `
       { sleep 5;} # Опрос статуса, переход в спящий режим на 5 секунд или выполнение действия.

Переключатель ($ Job. JobState)
{
    "Перенесено" {Complete-BitsTransfer -BitsJob $Job}
    "Ошибка" {$Работа | Format-List } # Список ошибок.default {"Другое действие"} # Выполнить корректирующее действие.
}

  

В предыдущем примере задание передачи BITS было назначено переменной $Job. Файлы загружаются последовательно. После завершения задания передачи файлы сразу становятся доступны. Если $Job.JobState возвращает «Перенесено», объект $Job отправляется командлету Complete-BitsTransfer.

Если $Job.JobState возвращает «Error», объект $Job отправляется командлету Format-List для перечисления ошибок.

Для управления удаленными сеансами PowerShell

Начиная с Windows 10 версии 1607, вы можете запускать командлеты PowerShell, BITSAdmin или другие приложения, использующие интерфейсы BITS, из командной строки PowerShell Remote, подключенной к другому компьютеру (физическому или виртуальному).Эта возможность недоступна при использовании командной строки PowerShell Direct для виртуальной машины на той же физической машине, а также при использовании командлетов WinRM.

Задание BITS, созданное из сеанса удаленной оболочки PowerShell, выполняется в контексте учетной записи пользователя этого сеанса и будет выполняться только при наличии хотя бы одного активного сеанса локального входа в систему или сеанса удаленной оболочки PowerShell, связанного с этой учетной записью пользователя. Вы можете использовать постоянные PSSessions PowerShell для запуска удаленных команд без необходимости держать окно PowerShell открытым для каждого задания, чтобы продолжить выполнение, как описано в разделе Основы PowerShell: удаленное управление.

  • New-PSSession создает постоянный сеанс Remote PowerShell. После создания объекты PSSession сохраняются на удаленном компьютере до тех пор, пока не будут явно удалены. Любые задания BITS, инициированные в активном сеансе, будут передавать данные даже после того, как клиент отключится от сеанса.
  • Disconnect-PSSession отключает клиентский компьютер от удаленного сеанса PowerShell, и состояние сеанса продолжает поддерживаться удаленным компьютером. Самое главное, что процессы удаленного сеанса будут продолжать выполняться, а задания BITS будут продолжать выполняться.Клиентский компьютер может даже перезагрузиться и/или выключить после вызова Disconnect-PSSession.
  • Connect-PSSession повторно подключает клиентский компьютер к активному удаленному сеансу PowerShell.
  • Remove-PSSession прерывает удаленный сеанс PowerShell.

В приведенном ниже примере показано, как использовать PowerShell Remote для работы с асинхронными заданиями передачи BITS таким образом, чтобы задание продолжало выполняться, даже если вы не подключены активно к удаленному сеансу.

  # Установите удаленный сеанс PowerShell на сервере Server01 с именем «MyRemoteSession».
New-PSSession -ComputerName Server01 -Name MyRemoteSession -Credential Domain01\User01

# Войти в ранее установленную сессию для выполнения команд
Enter-PSSession -Name MyRemoteSession

# Перечислить активные передачи BITS на удаленной машине
Get-BitsTransfer

# Во время работы в контексте удаленного сеанса PowerShell запустите новую передачу BITS
Start-BitsTransfer-Source https://Server1.TrustedDomain.com/File1.zip - Место назначения c:\temp\downloads\ - Асинхронный

# Выход из контекста удаленного сеанса PowerShell
Exit-PSSession

# Отключить удаленный сеанс PowerShell MyRemoteSession от текущего окна PowerShell
# После этой команды можно безопасно закрыть текущее окно PowerShell и выключить локальную машину
Disconnect-PSSession -Name MyRemoteSession


# Приведенные ниже команды можно выполнять из другого окна PowerShell даже после перезагрузки локальной машины.
# Подключить удаленный сеанс PowerShell MyRemoteSession к текущему окну PowerShell
Connect-PSSession -ComputerName Server01 -Name MyRemoteSession

# Войти в ранее установленную сессию для выполнения команд
Enter-PSSession -Name MyRemoteSession

# Перечислить активные передачи BITS на удаленной машине
Get-BitsTransfer

# Управляйте передачей BITS на удаленном компьютере с помощью Complete-BitsTransfer, Remove-BitsTransfer и т. д.# Выход из контекста удаленного сеанса PowerShell
Exit-PSSession

# Уничтожить удаленный сеанс PowerShell MyRemoteSession, когда он больше не нужен
Remove-PSSession -Name MyRemoteSession
  

Start-BitsTransfer

Complete-BitsTransfer

 

 

Start-BitsTransfer — PowerShell — SS64.com

Start-BitsTransfer — PowerShell — SS64.com

Создайте новое задание передачи фоновой интеллектуальной службы передачи (BITS).

 Синтаксис
      Start-BitsTransfer [-Source]  строка  [] [[-Destination]  строка  []]
         [-Асинхронный] [-Аутентификация  строка ] [-Учетные данные  PSCredential ]
            [-Description  строка ] [-DisplayName  строка ] [-Priority  строка ]
               [-ProxyAuthentication  строка ] [-ProxyBypass  строка  []]
                  [-ProxyCredential  PSCredential  ] [-ProxyList Uri[]]
                     [-ProxyUsage  строка ] [-RetryInterval  целое число ]
                        [-RetryTimeout int] [-Suspended] [-TransferType  строка  ]
                           [-Confirm] [-WhatIf] [ Общие параметры ]

Ключ
   -BitsJob  BitsJob  []
       Задание(я) передачи BITS для изменения.Передайте значение этому параметру из других командлетов, возвращающих объекты BitsJob, например Get-BitsTransfer.

   -Асинхронный
       Разрешить создание задания передачи BITS, а затем его обработку в фоновом режиме.
       Командная строка снова появляется сразу после создания задания передачи BITS.
       Возвращенный объект BitsJob можно использовать для отслеживания состояния и хода выполнения задания.

   -Аутентификация  строка 
       Механизм аутентификации, который будет использоваться на сервере.Возможные значения:
         Базовый Отправьте имя пользователя и пароль открытым текстом на сервер или прокси.
         Дайджест Схема запрос-ответ, использующая указанную сервером строку данных.
         NTLM Схема запроса-ответа с использованием учетных данных Windows
                    пользователя для аутентификации домена.
           Negotiate  Схема запроса-ответа, которая согласовывает с сервером или прокси-сервером
                    определить, какую схему использовать.Например: Kerberos или NTLM.
         Паспорт Используйте Windows Live ID в качестве механизма проверки подлинности (live.com).

   -Учетные данные  PSCУчетные данные 
       Учетные данные, используемые для аутентификации пользователя на сервере.
       По умолчанию используется текущий пользователь. Введите имя пользователя, например «User64», «Domain64\User64».
       или «Пользователь@example.com». Или используйте Get-Credential, чтобы создать значение для этого параметра.
       Когда вы вводите имя пользователя, вам будет предложено ввести пароль.-Описание  строка 
       До 1024 символов.

   -Назначение  строка  []
       Место назначения и имена файлов для передачи.
       Имена назначения сочетаются с соответствующими именами исходных файлов.
       Например, первое имя файла, указанное в параметре -Source, соответствует
       имя первого файла в параметре -Destination и второе имя файла в параметре -Source
       Параметр соответствует второму имени файла в параметре Destination.Параметры Source и Destination должны содержать одинаковое количество элементов.

   -DisplayName  строка 
       Отображаемое имя обеспечивает удобный способ различать задания передачи BITS.

   -Приоритет  строка 
       Установите приоритет задания передачи BITS, который влияет на использование полосы пропускания.
       Фоновые передачи используют свободную полосу пропускания сети клиентского компьютера для передачи файлов.
       действительные значения:
          Передний план  Перенос задания на передний план.(самый высокий приоритет)
                   Передачи переднего плана конкурируют за пропускную способность сети с другими приложениями,
                   что может помешать пользователю в целом работать в сети.
                   Однако, если Start-BitsTransfer используется в интерактивном режиме, это, вероятно, лучший вариант.

        Высокий Перевод задания в фоновый режим с высоким приоритетом.
        Обычный Перевод задания в фоновый режим с обычным приоритетом.
        Низкий Перевод задания в фоновый режим с низким приоритетом.(самый низкий приоритет)

   -ProxyAuthentication  строка 
       Механизм аутентификации, который будет использоваться на сервере.
       Возможные значения:
         Базовый Отправьте имя пользователя и пароль открытым текстом на сервер или прокси.
         Дайджест Схема запрос-ответ, использующая указанную сервером строку данных.
         NTLM Схема запроса-ответа с использованием учетных данных Windows
                    пользователя для аутентификации домена. Negotiate  Схема запроса-ответа, которая согласовывает с сервером или прокси-сервером
                    определить, какую схему использовать. Например: Kerberos или NTLM.
         Паспорт Используйте Windows Live ID в качестве механизма проверки подлинности (live.com).

   -ProxyBypass  строка  []
       Список имен хостов для прямого подключения.
       Хосты в списке проверяются по порядку, пока не будет установлено успешное соединение.
       Указание этого параметра игнорирует прокси.Если этот параметр используется, для параметра -ProxyUsage  должно быть задано значение  Override.

   -ProxyCredential  PSCredential 
       Учетные данные, используемые для аутентификации пользователя на прокси-сервере.
       Используйте Get-Credential, чтобы создать значение для этого параметра.

   -ProxyList  Ури  []
       Список прокси для использования.
       Прокси в списке пробуются по порядку, пока не будет установлено успешное соединение.
       Если этот параметр используется, для параметра -ProxyUsage  должно быть задано значение  Override.-ProxyUsage  строка 
       Настройки использования прокси. Возможные значения:
            SystemDefault  Использовать системные настройки прокси-сервера по умолчанию.
          NoProxy Не использовать прокси для передачи файлов.
                        Используйте этот параметр для передачи файлов в локальной сети (LAN).
          AutoDetect Автоматическое определение настроек прокси.
                        BITS определяет параметры прокси для каждого файла в задании.Override Укажите используемые прокси или серверы.
                        Если также указан параметр -ProxyList, используются прокси из этого списка.
                        Если также указан параметр -ProxyBypass, используются серверы из этого списка.
                        В обоих случаях используется первый член списка. Если первый член
                        недостижим, последующие члены пробуются до тех пор, пока не будет успешно установлен контакт с членом.-RetryInterval  целое число 
       Минимальное время в секундах, в течение которого BITS ожидает перед попыткой передачи файла.
       после того, как BITS обнаруживает временную ошибку.
       Минимально допустимое значение составляет 60 секунд. Если это значение превышает значение RetryTimeout из
       объект BitsJob, BITS не будет повторять передачу. Вместо этого BITS устанавливает состояние
       BITS переводит задание в состояние Error. Значение по умолчанию — 600 секунд (10 минут).

   -RetryTimeout  интервал 
       Время в секундах, в течение которого BITS пытается передать файл после первого
       возникает временная ошибка.Установка периода повтора на 0 предотвращает повторные попытки.
       Если значение периода повторных попыток превышает параметр групповой политики JobInactivityTimeout (по умолчанию 90 дней),
       BITS отменяет задание. Значение по умолчанию — 1 209 600 секунд (14 дней).

   -Источник  строка  []
       Исходное местоположение и имена файлов для передачи.
       Имена исходных файлов сочетаются с соответствующими именами файлов назначения. Например,
       первое имя файла, указанное в параметре -Source, соответствует первому имени файла в
       параметр -Destination, а второе имя файла в параметре -Source соответствует
       второе имя файла в параметре -Destination.Параметры Source и Destination должны содержать одинаковое количество элементов.
       Принимает стандартные подстановочные знаки, звездочку (*) и вопросительный знак (?).
       Или вы можете использовать оператор диапазона, такой как «[a-r]».

   -Приостановленный
       Приостановите задание передачи BITS.
       Если параметр Suspended не указан, задание автоматически начинает задание передачи.
       Если указан параметр Suspended, командная строка возвращается сразу после
       Задание передачи BITS создано.Вы можете использовать команду Resume-BitsTransfer для запуска задания передачи.

   -TransferType  строка 
       Тип задания передачи BITS. Возможные значения:
            Загрузка  Загрузка файлов на клиентский компьютер.
          Загрузить Загрузить файл на сервер.
          UploadReply Загрузить файл на сервер и получить ответный файл с сервера.

   -Подтверждать
       Запрашивать подтверждение перед выполнением команды.

   -Что, если
       Опишите, что произойдет, если вы выполните команду, фактически не выполняя команду.

Start-BitsTransfer создает новое задание передачи BITS для передачи одного или нескольких файлов между клиентским компьютером и сервером. Параметр -TransferType указывает направление передачи. По умолчанию после того, как командлет начинает передачу, командная строка недоступна, пока передача не будет завершена или пока передача не войдет в состояние ошибки. Если состояние возвращенного объекта BitsJob — Ошибка, код ошибки и описание содержатся в объекте и могут использоваться для анализа.

Командлет Start-BitsTransfer поддерживает загрузку нескольких файлов с сервера на клиентский компьютер, но обычно не поддерживает загрузку нескольких файлов с клиентского компьютера на сервер. Чтобы загрузить более одного файла, передайте выходные данные из Import-CSV в Add-BitsFile. Или рассмотрите возможность использования CAB-файла (.cab) или сжатого файла (.zip).

Примеры

Создайте новое задание передачи BITS, которое загружает файл с сервера:

PS C:\> Start-BitsTransfer — Источник http://server64/demodir/file1.txt — Место назначения c:\demo\file1.txt
Или в сокращенной форме:
PS C:\> Start-BitsTransfer http://server64/demodir/file1.txt c:\demo\file1.txt

Создайте новое задание передачи BITS, которое загружает несколько файлов с сервера:

PS C:\> Import-CSV filelist.txt | Start-BitsTransfer

filelist.txt
Источник, назначение
http://server64/demodir/file1.txt, c:\demo\file1.txt
http://сервер64/демодир/файл2.txt, c:\demo\file2.txt
http://server64/demodir/file3.txt, c:\demo\file3.txt

Создайте новое задание передачи BITS, которое загружает файл на сервер:

 PS C:\> Start-BitsTransfer  -Source  c:\demo\file1.txt  -Destination  http://server64/demodir/file1.txt -TransferType Upload 

Создайте новое задание передачи BITS, которое загружает два файла с сервера:

 PS C:\> Start-BitsTransfer  -Источник  http://server64/demodir/file1.txt, http://server64/demodir/file2.txt  — пункт назначения  c:\demo\file1.txt, c:\demo\file2.txt 

Загрузка нескольких файлов с сервера:

 PS C:\> Start-BitsTransfer -Source http://server64/demodir/*.* -Destination c:\demo\ 

Загрузить файл, используя определенный набор учетных данных:

 PS C:\> $c = Get-Credential 
Start-BitsTransfer -DisplayName MyJob -Credential $c -Source http://server64/demodir/file1.txt -Destination c:\demo\file1.текст

«Труднее скрыть невежество, чем приобрести знание» ~ Арнольд Х. Глазго

Связанные командлеты PowerShell:

Complete-BitsTransfer — завершение передачи BITS.
Get-BitsTransfer — получить передачу одного или нескольких битов.
Командлеты BITS PowerShell


 

Copyright © 1999-2022 SS64.com
Некоторые права защищены

Start-BitsTransfer (примеры) | Операционные системы, сценарии, PowerShell и безопасность

Пример 1

C:\PS>Start-BitsTransfer-Source https://server01/servertestdir/testfile1.txt – место назначения c:\clienttestdir\testfile1.txt

C:\PS>Start-BitsTransfer – источник https://server01/servertestdir/testfile1.txt – место назначения c:\clienttestdir\testfile1.txt

 

Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает файл с сервера. Локальное и удаленное имена файла указываются в параметрах Source и Destination. Поскольку тип передачи по умолчанию — Загрузка, файл https://Server01/servertestdir/testfile1.txt передается в C:\clienttestdir\testfile1.txt на клиенте. Командная строка возвращается, когда передача файла завершена или когда она переходит в состояние ошибки.

Когда вы загружаете файлы в местоположение HTTP, для параметра TransferType должно быть установлено значение Upload.

Поскольку командлет Start-BitsTransfer предполагает, что первый параметр является источником, а второй параметр — целевым, когда значение не указано, эту команду можно упростить следующим образом:

Start-BitsTransfer https://server01/servertestdir /тестовый файл1.txt c:\clienttestdir\testfile1.txt

Пример 2

C:\PS>Импорт-CSV filelist.txt | Start-BitsTransfer

C:\PS>Import-CSV filelist.txt | Start-BitsTransfer

 

Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает несколько файлов с сервера.

Команда импортирует расположение исходного и целевого файлов, а затем передает их команде Start-BitsTransfer.Команда Start-BitsTransfer создает новое задание передачи BITS, добавляет файлы в одно задание, а затем последовательно передает их клиенту.

Содержимое файла Filelist.txt напоминает следующую информацию:

Источник, назначение
https://server01/servertestdir/testfile1.txt, c:\clienttestdir\testfile1.txt
https://server01/servertestdir/ testfile2.txt, c:\clienttestdir\testfile2.txt
https://server01/servertestdir/testfile3.txt, c:\clienttestdir\testfile3.txt
https://server01/servertestdir/testfile4.txt, c:\clienttestdir\testfile4.txt

Пример 3

C:\PS>Start-BitsTransfer -Source c:\clienttestdir\testfile1.txt -Destination

 

https://server01/servertestdir/testfile1.txt -TransferType Upload

Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает файл на сервер.Локальное и удаленное имена файла указываются в параметрах Source и Destination. Поскольку тип передачи по умолчанию — Загрузка, для параметра TransferType должно быть задано значение Отправка. Файл C:\clienttestdir\testfile1.txt на клиенте переносится на https://Server01/servertestdir/testfile1.txt. Командная строка возвращается, когда передача файла завершена или переходит в состояние ошибки.

Важно! Командлет Start-BitsTransfer позволяет загружать несколько файлов с сервера на клиентский компьютер, но обычно не позволяет загружать несколько файлов с клиентского компьютера на сервер.Это ограничение можно обойти, используя командлет Import-CSV для передачи выходных данных командлету Start-BitsTransfer. Если вам нужно загрузить более одного файла, вы также можете использовать файл .cab или .zip.

Поскольку командлет Start-BitsTransfer предполагает, что первый параметр является источником, а второй параметр — местом назначения, когда значение не указано, эту команду можно упростить следующим образом:

Start-BitsTransfer c:\clienttestdir\testfile1. txt https://server01/servertestdir/testfile1.txt -TransferType Загрузка

Пример 4

C:\PS>Start-BitsTransfer -Source https://server01/servertestdir/testfile1.txt, https://server01/servertestdir/testfile1.txt -Destination c:\clienttestdir\testfile1.txt, c:\clienttestdir\testfile1 .txt

C:\PS>Start-BitsTransfer -Source c:\clienttestdir\testfile1.txt -Destination

C:\PS>Start-BitsTransfer -Source https://server01/servertestdir/testfile1.txt, https://server01/servertestdir/testfile1.txt -Destination c:\clienttestdir\testfile1. txt, c:\clienttestdir\testfile1.txt

 

Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает несколько файлов с сервера.

Локальные и удаленные имена файлов указываются в параметрах Source и Destination. Поскольку параметр TransferType по умолчанию имеет значение Download, файлы https://Server01/servertestdir/testfile1.txt и https://Server01/servertestdir/testfile2.txt переносятся в C:\clienttestdir\testfile1.txt и C:\ клиенттестдир\тестфайл2.txt на клиентском компьютере. Командная строка возвращается, когда передача файла завершена или переходит в состояние ошибки.

Пример 5

C:\PS>$c = Get-Credential New-FileTransfer -DisplayName MyJob -Credential c$ -Source https://server01/servertestdir/testfile1.txt -Destination c:\clienttestdir\testfile1.txt

C:\PS>$c = Get-Credential

New-FileTransfer -DisplayName MyJob -Credential c$ -Source https://server01/servertestdir/testfile1.txt -Destination c:\clienttestdir\testfile1.txt

 

Описание
———–
Эти команды создают новое задание передачи BITS, которое загружает файл с сервера с использованием определенного набора учетных данных.

Первая команда получает набор учетных данных от пользователя, вызывая командлет Get-Credential. Возвращенный объект PSCredential сохраняется в переменной $c.

Вторая команда использует параметр Credential для передачи объекта PSCredential, который хранится в переменной $c, командлету Start-BitsTransfer.Создается новое задание передачи BITS, которое загружает файл https://server01/servertestdir/testfile1.txt на клиент. Указанные учетные данные используются для аутентификации пользователя на сервере. Кроме того, необязательный параметр DisplayName используется для присвоения заданию передачи BITS уникального имени.

Пример 6

C:\PS>Импорт-CSV filelist.txt | Start-BitsTransfer -Asynchronous -Priority Обычный

C:\PS>Import-CSV filelist.текст | Start-BitsTransfer -Asynchronous -Priority Обычный

 

Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает несколько файлов с сервера. Файлы будут загружены последовательно, но они будут доступны сразу после завершения задания на передачу.

Команда импортирует расположение исходного и целевого файлов, а затем передает их команде Start-BitsTransfer. Команда Start-BitsTransfer создает новое задание передачи BITS, добавляет файлы в одно задание, а затем последовательно передает их клиенту.

Содержимое файла Filelist.txt напоминает следующую информацию:

Источник, назначение
https://server01/servertestdir/testfile1.txt, c:\clienttestdir\testfile1.txt
https://server01/servertestdir/ testfile2.txt, c:\clienttestdir\testfile2.txt
https://server01/servertestdir/testfile3.txt, c:\clienttestdir\testfile3.txt
https://server01/servertestdir/testfile4.txt, c:\clienttestdir \testfile4.txt

Пример 7

C:\PS>Start-BitsTransfer-Source https://server01/servertestdir/*.* -Destination c:\clienttestdir\

C:\PS>Start-BitsTransfer -Source https://server01/servertestdir/*.* -Destination c:\clienttestdir\

  Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает несколько файлов с сервера.

Команда Start-BitsTransfer создает новое задание передачи BITS. Все файлы добавляются в одно задание, а затем последовательно передаются клиенту.

В следующей команде показан другой вариант команды передачи файлов, в которой используется подстановочный знак:

Start-BitsTransfer -Source https://server01/servertestdir/*.txt -Destination c:\clienttestdir\

Путь назначения не может использовать подстановочные знаки. Путь назначения поддерживает только относительный каталог, корневой путь или неявный каталог (текущий каталог). Кроме того, файлы назначения нельзя переименовать с помощью подстановочного знака. Например, следующая команда не работает:

c:\clienttestdir\*.БАК

Пример 8

C:\PS>Импорт-CSV filelist.txt | Start-BitsTransfer -TransferType Upload

C:\PS>Import-CSV filelist.txt | Start-BitsTransfer -TransferType Upload

 

Описание
———–
Эта команда создает новое задание передачи BITS, которое загружает несколько файлов от клиента.

Команда импортирует расположение исходного и целевого файлов, а затем передает их команде Start-BitsTransfer.Команда Start-BitsTransfer создает новое задание передачи BITS, добавляет файлы в одно задание, а затем последовательно передает их клиенту.

Содержимое файла Filelist.txt напоминает следующую информацию:

Источник, назначение
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

Публикация за 8 октября 2014 г.

КАТЕГОРИЯ

PowerShell, Red, Servidores

Start-BitsTransfer | Операционные системы, сценарии, PowerShell и безопасность

Создает новое задание передачи фоновой интеллектуальной службы передачи (BITS).

Синтаксис

Start-BitsTransfer [-Source] [[-Destination] ] [-Asynchronous] [-Authentication ] [-Credential ] [-Description ] [- DisplayName ] [-Priority ] [-ProxyAuthentication ] [-ProxyBypass ] [-ProxyCredential ] [-ProxyList ] [-ProxyUsage ] [-RetryInterval ] [-RetryTimeout ] [-Suspended] [-TransferType ] [-Confirm] [-WhatIf] []

Start-BitsTransfer [-Source] [[-Destination] ] [-Asynchronous] [-Authentication ] [-Credential ] [-Description ] [-DisplayName ] [-Priority ] [-ProxyAuthentication ] [-ProxyBypass ] [-ProxyCredential ] [-ProxyList ] [ -ProxyUsage ] [-RetryInterval ] [-RetryTimeout ] [-Suspended] [-TransferType ] [-Confirm] [-WhatIf] []< /string>

 

Описание

Командлет Start-BitsTransfer создает новое задание передачи BITS для передачи одного или нескольких файлов между клиентским компьютером и сервером.Параметр TransferType указывает направление передачи. По умолчанию после того, как командлет начинает передачу, командная строка недоступна, пока передача не будет завершена или пока передача не войдет в состояние ошибки. Если состояние возвращенного объекта BitsJob — Ошибка, код ошибки и описание содержатся в объекте и могут использоваться для анализа.
Командлет Start-BitsTransfer поддерживает загрузку нескольких файлов с сервера на клиентский компьютер, но обычно не поддерживает загрузку нескольких файлов с клиентского компьютера на сервер.Если вам нужно загрузить более одного файла, вы можете использовать командлет Import-CSV, чтобы направить выходные данные в командлет Add-BitsFile для загрузки нескольких файлов. Или, если вам нужно загрузить более одного файла, рассмотрите возможность использования CAB-файла (.cab) или сжатого файла (.zip).

Параметры

-Асинхронный
Позволяет создать задание передачи BITS и затем обработать его в фоновом режиме. Командная строка снова появляется сразу после создания задания передачи BITS.Возвращенный объект BitsJob можно использовать для отслеживания состояния и хода выполнения.

-Аутентификация
Указывает механизм аутентификации, который будет использоваться на сервере. Возможные значения:
— Basic: Basic — это схема, в которой имя пользователя и пароль отправляются в виде открытого текста на сервер или прокси-сервер.
— Дайджест: Дайджест — это схема запроса-ответа, в которой для запроса используется указанная сервером строка данных.
— NTLM: NTLM — это схема запроса-ответа, которая использует учетные данные пользователя для проверки подлинности в сетевой среде на базе Windows.
— согласование (по умолчанию): согласование — это схема запроса-ответа, которая согласовывает с сервером или прокси-сервером, чтобы определить, какую схему использовать для проверки подлинности. Например, значение этого параметра позволяет согласованию определить, используется ли протокол Kerberos или NTLM.
— Паспорт: Паспорт — это централизованная служба проверки подлинности, предоставляемая Microsoft, которая предлагает единый вход в систему для сайтов-участников.

-Credential
Указывает учетные данные, используемые для аутентификации пользователя на сервере.По умолчанию используется текущий пользователь. Введите имя пользователя, например «Пользователь01», «Домен01\Пользователь01» или «[электронная почта защищена]». Или используйте командлет Get-Credential, чтобы создать значение для этого параметра. Когда вы вводите имя пользователя, вам будет предложено ввести пароль.

-Описание
Описывает задание передачи BITS. Описание ограничено 1024 символами.

-Destination
Указывает место назначения и имена файлов, которые вы хотите передать.Имена назначения сочетаются с соответствующими именами исходных файлов. Например, первое имя файла, указанное в параметре Source, соответствует первому имени файла в параметре Destination, а второе имя файла в параметре Source соответствует второму имени файла в параметре Destination. Параметры Source и Destination должны иметь одинаковое количество элементов; в противном случае команда выдает ошибку.

-DisplayName
Задает отображаемое имя для задания передачи BITS.Отображаемое имя обеспечивает удобный способ различать задания передачи BITS.

-Priority
Устанавливает приоритет задания передачи BITS, который влияет на использование полосы пропускания. Можно указать следующие значения:
— Передний план (по умолчанию): переводит задание на передний план. Передачи переднего плана конкурируют за пропускную способность сети с другими приложениями, что может препятствовать работе пользователя в сети в целом. Однако, если команда Start-BitsTransfer используется в интерактивном режиме, это, вероятно, лучший вариант.Это самый высокий уровень приоритета.
— Высокий: задание передается в фоновом режиме с высоким приоритетом. Фоновые передачи используют свободную полосу пропускания сети клиентского компьютера для передачи файлов.
— Обычный: задание передается в фоновом режиме с обычным приоритетом. Фоновые передачи используют свободную полосу пропускания сети клиентского компьютера для передачи файлов.
— Низкий: задание передается в фоновом режиме с низким приоритетом. Фоновые передачи используют свободную полосу пропускания сети клиента для передачи файлов.Это самый низкий уровень фонового приоритета.

-ProxyAuthentication
Указывает механизм проверки подлинности для использования на веб-прокси. Возможные значения:
— Basic: Basic — это схема, в которой имя пользователя и пароль отправляются в виде открытого текста на сервер или прокси-сервер.
— Дайджест: Дайджест — это схема запроса-ответа, в которой для запроса используется указанная сервером строка данных.
— NTLM: NTLM — это схема запроса-ответа, которая использует учетные данные пользователя для проверки подлинности в сетевой среде на базе Windows.
— согласование (по умолчанию): согласование — это схема запроса-ответа, которая согласовывает с сервером или прокси-сервером, чтобы определить, какую схему использовать для проверки подлинности. Например, значение этого параметра позволяет согласованию определить, используется ли протокол Kerberos или NTLM.
— Паспорт: Паспорт — это централизованная служба проверки подлинности, предоставляемая Microsoft, которая предлагает единый вход в систему для сайтов-участников.

-ProxyBypass
Задает список имен хостов для прямого подключения.Хосты в списке проверяются по порядку, пока не будет установлено успешное соединение. Указание этого параметра игнорирует прокси. Если этот параметр используется, для параметра ProxyUsage должно быть установлено значение Override; в противном случае возникает ошибка.

-ProxyCredential
Указывает учетные данные для аутентификации пользователя на прокси-сервере. Вы можете использовать командлет Get-Credential, чтобы создать значение для этого параметра.

-ProxyList
Задает список используемых прокси.Прокси в списке пробуются по порядку, пока не будет установлено успешное соединение. Если этот параметр указан, а ProxyUsage имеет значение, отличное от Override, возникает ошибка.

-ProxyUsage
Указывает параметры использования прокси. Возможные значения:
— SystemDefault (по умолчанию): использовать системные настройки прокси-сервера по умолчанию.
— NoProxy: не использовать прокси для передачи файлов. Используйте этот параметр при передаче файлов в локальной сети (LAN).
— AutoDetect: автоматическое определение настроек прокси.BITS определяет параметры прокси для каждого файла в задании.
— Переопределить: укажите используемые прокси или серверы. Если также указан параметр ProxyList, используются прокси из этого списка. Если также указан параметр ProxyBypass, используются серверы из этого списка. В обоих случаях используется первый член списка. Если первый член недоступен, последующие члены пробуются до тех пор, пока не будет успешно установлен контакт с членом.

-RetryInterval
Указывает минимальное время в секундах, которое BITS ожидает перед попыткой передачи файла после того, как BITS обнаруживает временную ошибку.Минимально допустимое значение составляет 60 секунд. Если это значение превышает значение RetryTimeout из объекта BitsJob, BITS не будет повторять передачу. Вместо этого BITS устанавливает состояние задания передачи BITS в состояние «Ошибка».
Значение по умолчанию — 600 секунд (10 минут).

-RetryTimeout
Указывает время в секундах, в течение которого BITS пытается передать файл после возникновения первой временной ошибки. Установка периода повтора равным 0 предотвращает повторные попытки и принудительно переводит задание в состояние BG_JOB_STATE_ERROR при возникновении ошибки.Если значение периода повтора превышает параметр групповой политики JobInactivityTimeout (по умолчанию 90 дней), BITS отменяет задание после превышения параметра групповой политики JobInactivityTimeout.
Значение по умолчанию — 1 209 600 секунд (14 дней).

-Source
Указывает исходное местоположение и имена файлов, которые вы хотите передать. Имена исходных файлов сочетаются с соответствующими именами файлов назначения. Например, первое имя файла, указанное в параметре Source, соответствует первому имени файла в параметре Destination, а второе имя файла в параметре Source соответствует второму имени файла в параметре Destination.Параметры Source и Destination должны иметь одинаковое количество элементов; в противном случае команда выдает ошибку. Вы можете использовать стандартные подстановочные знаки, такие как звездочка (*) и вопросительный знак (?). Или вы можете использовать оператор диапазона, такой как «[a-r]».

— Приостановлено
Приостанавливает задание передачи BITS. Если параметр Suspended не указан, задание автоматически начинает задание передачи. Если указан параметр Suspended, командная строка возвращается сразу после создания задания передачи BITS.Для запуска задания переноса можно использовать командлет Resume-BitsTransfer.

-TransferType
Указывает тип задания передачи BITS. Возможные значения:
— Загрузка (по умолчанию): указывает, что задание передачи загружает файлы на клиентский компьютер.
— Загрузка: указывает, что задание передачи загружает файл на сервер.
— UploadReply: указывает, что задание передачи загружает файл на сервер и получает ответный файл с сервера.

-Confirm
Запрашивает подтверждение перед выполнением команды.

-WhatIf
Описывает, что произойдет, если вы выполните команду без ее фактического выполнения.


Этот командлет поддерживает общие параметры: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входы и выходы
Тип ввода — это тип объектов, которые вы можете передать командлету. Тип возвращаемого значения — это тип объектов, возвращаемых командлетом.

Вводы
Нет
Этот командлет не принимает и не вводит.

Выходные данные
Microsoft.BackgroundIntelligentTransfer.Management.BitsJob
При вызове с параметром Asynchronous этот командлет передает в качестве выходных данных объект BitsJob, связанный с новым заданием передачи BITS. В противном случае вывод не создается.

Примечания
Вы можете отменить задание передачи, которое выполняется в синхронном режиме (приоритет переднего плана), нажав CTRL+C.
Если служба BITS остановлена ​​во время задания синхронной передачи файлов, задание передачи файлов завершится ошибкой, и задание передачи файлов не будет удалено из очереди BitsTransfer.Задание на передачу файла, оставшееся в очереди BitsTransfer, можно просмотреть с помощью командлета Get-BitsTransfer. Задание на передачу файлов, оставшееся в очереди BitsTransfer, можно удалить с помощью командлета Remove-BitsTransfer. После перезапуска службы BITS задание передачи файлов восстанавливается и возобновляет задание передачи файлов, если только задание передачи файлов не было удалено в промежутке.

Публикация за 6 октября 2014 г.

КАТЕГОРИИ

PowerShell, Red, Servidores, Web

Как загружать файлы через PowerShell (Start-BitsTransfer) — SID-500.COM

PowerShell

Для загрузки файлов из Интернета вы можете использовать графический интерфейс или команду из модуля PowerShell BitsTransfer. В этой записи блога я покажу, как загружать файлы с помощью Windows PowerShell.

Модуль BitsTransfer

Для загрузки файлов нам нужен командлет Start-BitsTransfer, который можно найти, изучив команды модуля.

  Get-Command-Module BitsTransfer  

Загрузка файлов через PowerShell

Все, что нам нужно сделать, это указать URL-адрес.Например, я хотел бы скачать и посмотреть видео с сайта Technet о Windows Azure. Загруженный файл должен быть сохранен в моем домашнем каталоге. Итак, я запускаю

  Start-BitsTransfer "http://video.ch9.ms/ch9/3202/b43a9daa-b0e7-4591-b1b9-14a4a   b503202/AzureFridayEventGridBanisadr20170814_high.mp4" - пункт назначения $Home   
 

Просмотр видео через PowerShell

После загрузки откройте файл с помощью Invoke-Item.

  Invoke-Item $Home\AzureFridayEventGridBanisadr20170814_high.мп4  

Загрузка больших файлов в асинхронном режиме

Если вы думаете о загрузке больших файлов, вы можете сделать это, не прерывая свою работу. Затем загрузка начинается в фоновом режиме. Хорошей новостью является то, что загрузка продолжится, даже если вы выйдете из PowerShell. Когда вы выключите компьютер, загрузка возобновится автоматически после следующего запуска.

Пример:

  Start-BitsTransfer "http://video.ch9.ms/ch9/3202/b43a9daa-b0e7-4591-b1b9-14a4a   b503202/AzureFridayEventGridBanisadr20170814_mid.mp4" — пункт назначения $Home — асинхронный  

Чтобы проверить статус загрузки, выполните

  Get-BitsTransfer  

Важное примечание. Чтобы открыть загруженный файл, необходимо завершить передачу.

  Get-BitsTransfer | Complete-BitsTransfer  

После завершения проверьте каталог, чтобы найти файл.

  Get-ChildItem $Home-Фильтр *.mp4  

Опубликовано Патриком Грюнауэром

Microsoft MVP по PowerShell [2018–2021], ИТ-тренер, ИТ-консультант, MCSE: облачная платформа и инфраструктура, сертифицированный инструктор Cisco Academy, CCNA Routing und Switching, CCNA Security Просмотреть все сообщения Патрика Грюнауэра

Сценарий PowerShell, использующий Bits-Transfer, не работает как запланированная задача

Я пытался использовать другие вопросы и ответы, такие как сценарий Windows Server 2008 R2 PowerShell, который запускается вручную, но не как запланированная задача, но безрезультатно.

По сути, у меня есть PoSh-скрипт (очевидно, это горячая аббревиатура для него в настоящее время), который копирует много больших файлов, по одному за раз , с одного сервера (UNC-путь) на локальный диск. Он делает это в цикле и использует BITS Transfer. Примерно:

  1. Start-BitsTransfer источник/назначение/асинхронный/низкий приоритет
  2. в то время как состояние задания Bits все еще «подключение» или «передача», Sleep 2 секунды (т.е. дождитесь окончания)
  3. Как только мы выйдем из этого цикла, Complete-BitsTransfer
  4. Write-Host a «завершенный файл X» msg
  5. получить следующий файл, повторить... (так что да, есть внешний цикл по списку файлов, полученному из Get-ChildItem )

Скрипт работает при запуске из PoSh ISE и обычной консоли PoSh.

Я пробовал использовать Sleep , Start-Sleep и даже [Threading.Thread]::Sleep , думая, что проблема именно в этом. Затем я обернул .ps1 в .bat , и при запуске из CMD это тоже работает. Но во всех случаях Schedule Task, будь то вызов .ps1 напрямую или обертка .bat , не работает.

Это говорит , что это успешно, но на самом деле происходит то, что он запускает все задания по передаче, они переходят в состояние «Приостановлено» (показано Get-BitsTransfer в окне PoSh), и задача думает, что все в порядке, и завершается , оставив эти осиротевшие задания BITS, которые я не могу даже Complete-BitsTransfer на b/c, они тоже выдают ошибку из-за этого.

Другое поведение:

  • Вышеупомянутое происходит, когда я запускаю его как свою учетную запись администратора домена и позволяю ему хранить pwd с задачей.
  • Если я изменю его на учетную запись службы (которая является администратором на коробке), она на самом деле никогда не запускает задания BITS. Также выдает ошибку "пользователь должен иметь права входа в систему как пакетное задание".
  • Если я попытаюсь запустить его как локальную/встроенную учетную запись, он также не сможет запустить задания BITS.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *