Microsoft BITS を使用して多数のファイルを IIS サーバーに転送できるサービスをセットアップしようとしています。
必要なコンポーネントを IIS サーバーにインストールし、いくつかのファイルを正常にアップロードしましたが、仮想ディレクトリに認証を追加するとすぐに信頼できなくなります。
このコードフラグメントを使用して転送を行っています:
Get-ChildItem $sourcePath | % {
try
{
Start-BitsTransfer -Source $_.FullName -Destination "$destinationPath/$_" -TransferType Upload -Authentication Basic -Credential $credentials
}
catch
{
$_
}
}
認証と資格情報パラメーターを省略して匿名認証を有効にすると、毎回機能します。
匿名認証をオフにし、基本認証を追加$credentials
し、自分のドメインとユーザー名に設定すると、毎回パスワードが要求され、機能します。ダイジェスト認証も同様です。
基本認証を使用し、次のコードで資格情報を設定すると、最初は機能し、その後は失敗します。少し待ってから再試行すると、最初はリセットされて機能し、その後失敗することがあります。ダイジェスト認証も同様です。
資格情報の設定に使用するコードは次のとおりです。
$username = "mydomain\myuser"
$password = "mypassword"
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $securePassword)
失敗したときに表示されるエラーは次のとおりです。
Start-BitsTransfer : Value does not fall within the expected range.
At D:\Projects\Powershell\MoveFiles.ps1:48 char:9
+ Start-BitsTransfer -Source $_.FullName -Destination "$destinationPath/$_ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Start-BitsTransfer], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.BackgroundIntelligentTransfer.Management.NewBitsTransferCommand
HTTP を使用しても HTTPS を使用しても結果は同じで、失敗した試行は IIS ログに記録されません。
誰が問題が何であるかについて何か考えを持っていますか? Powershellでパスワードを設定するのではなく、パスワードを入力すると機能するため、Powershellの問題だと思います。
私が発見した最後の情報... Sharp BITS を使用して簡単な BITS アップロード プログラムを作成しましたが、問題なく動作しました。