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

Я новичок в написании сценариев PowerShell. Я борюсь с документацией MS и нахожу несколько примеров для работы.

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

Доступ к этому текстовому файлу осуществляется через https: с именем пользователя и паролем, выданными NTIS. Как я могу указать (жесткий код) пароль в строке аутентификации? Я знаю, что это плохая практика. Есть лучший способ сделать это?

Мой скрипт выглядит так-

    $date= Get-Date -format yyMMdd
    Import-Module BitsTransfer
    $Job = Start-BitsTransfer `
    -DisplayName DMFweeklytrans `
    -ProxyUsage AutoDetect `
    -Source https://dmf.ntis.gov/dmldata/weekly/WA$date `
    -Destination D:\Test.txt `
    -Authentication Basic `
    -Credential "myIssuedUsername" `
    -Asynchronous

While (($Job.JobState -eq "Transferring") -or ($Job.JobState -eq "Connecting")) {sleep 5}
Switch($Job.JobState)
    {
        "Transfer Completed" {Complete-BitsTransfer -BitsJobs $Jobs}
        default {$Job | Format-List} 
    }

person Colin    schedule 27.03.2013    source источник


Ответы (1)


Когда вам нужно предоставить учетные данные в неинтерактивном режиме, вы можете создать объект PSCredential следующим образом.

$secpasswd = ConvertTo-SecureString "PlainTextPassword" -AsPlainText -Force
$yourcreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd)

$Job = Start-BitsTransfer `
    -DisplayName DMFweeklytrans `
    -ProxyUsage AutoDetect `
    -Source https://dmf.ntis.gov/dmldata/weekly/WA$date `
    -Destination D:\Test.txt `
    -Authentication Basic `
    -Credential $yourcreds `
    -Asynchronous
person JPBlanc    schedule 27.03.2013
comment
Спасибо. Очень полезно. Я уверен, что ваш пример поможет и другим. - person Colin; 28.03.2013
comment
Есть ли способ напрямую установить заголовки? Например, Azure Devops хочет, чтобы токен (PAT) был установлен в качестве заголовка авторизации. По сути, это строка в кодировке base-64, но не ‹username›:‹password›. - person Marc; 12.05.2021
comment
@ Марк, ты пробовал -CustomHeaders с чем-то вроде: $MyPat = 'yourPAT' $B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat")) и "Authorization: Basic ${B64_PAT}" - person JPBlanc; 12.05.2021