Использование Windows PowerShell для создания заданий передачи BITS — Win32 apps
- Статья
- Чтение занимает 5 мин
Оцените свои впечатления
Да Нет
Хотите оставить дополнительный отзыв?
Отзывы будут отправляться в корпорацию Майкрософт.
Отправить
Спасибо!
В этой статье
Командлеты PowerShell можно использовать для создания синхронных и асинхронных фоновая интеллектуальная служба передачи (BITS) заданий передачи.
Во всех примерах в этом разделе используется командлет Start-BitsTransfer . Чтобы использовать командлет, сначала импортируйте модуль. Чтобы установить модуль, выполните следующую команду: Import-Module BitsTransfer. Для получения дополнительных сведений введите
Важно!
при использовании командлетов * -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
Возможные сбои
- параметр назначения неверен
$dmfpath\TestWA$date.txt
- есть более 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
Я не вижу в вашем коде обработки ошибок для возобновления / повторной попытки / перезапуска в случае сбоя.
- Это означает, почему в цикле или Get нет try / catch?
- Если 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]».
string [] | ||
Должность: | 0 | 90 |
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
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
КАТЕГОРИЯ
PowerShell, Red, ServidoresStart-BitsTransfer | Операционные системы, сценарии, PowerShell и безопасность
Создает новое задание передачи фоновой интеллектуальной службы передачи (BITS).
Синтаксис
Start-BitsTransfer [-Source]
Start-BitsTransfer [-Source] |
Описание
Командлет 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 задание передачи файлов восстанавливается и возобновляет задание передачи файлов, если только задание передачи файлов не было удалено в промежутке.
КАТЕГОРИИ
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. Примерно:
Start-BitsTransfer
источник/назначение/асинхронный/низкий приоритетв то время как
состояние задания Bits все еще «подключение» или «передача»,Sleep
2 секунды (т.е. дождитесь окончания)- Как только мы выйдем из этого цикла,
Complete-BitsTransfer
Write-Host
a «завершенный файл X» msg- получить следующий файл, повторить... (так что да, есть внешний цикл по списку файлов, полученному из
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.