[解決済み] Set-AzStorageBlobContentを使用して、プロンプトなしで新しいコンテンツのみをアップロードする。
2022-02-11 01:08:59
質問
ローカルフォルダーを列挙して、Azureストレージにアップロードしています。 アップロードしたいのは 新しい のコンテンツをAzureストレージに保存します。 Set-AzStorageBlobContentを-Force付きで使用すると、すべて上書きされます。 Forceを付けずに使用すると、既に存在するアイテムに対してプロンプトが表示されます。 Get-AzStorageBlob を使ってアイテムがすでに存在するかどうかを確認できますが、アイテムが存在する場合は赤いエラーが表示されます。 ない が存在します。 エラーやプロンプトを表示せずに新しいコンテンツだけを優雅にアップロードするこれらの項目の組み合わせを見つけることができません。 私は間違った方法を使用しているのでしょうか?
最終的な編集:Ivan Yangの提案に基づき、動作する解決策を追加しました。 現在、エラーメッセージなしで新しいファイルだけがアップロードされています。 キーは、エラーメッセージを例外に変換するために -ErrorAction Stop を使用し、その後例外をキャッチすることでした。
# In my code this is part of a Test-Blob function that returns $blobFound
$blobFound = $false
try
{
$blobInfo = Get-AzStorageBlob `
-Container $containerName `
-Context $storageContext `
-Blob $blobPath `
-ErrorAction Stop
$blobFound = ($null -ne $blobInfo)
}
catch [Microsoft.WindowsAzure.Commands.Storage.Common.ResourceNotFoundException]
{
# Eat the error that'd otherwise be printed
}
# Note in my code this is actually a call to my Test-Blob function
if ($false -eq $blobFound)
{
Set-AzStorageBlobContent `
-Container $containerName `
-Context $storageContext `
-File $sourcePath `
-Blob $blobPath `
-Force # -Force is unnecessary but just being paranoid to avoid prompts
}
どのように解決するのですか?
を試すと書いてありましたね。
Get-AzStorageBlob
ということで、継続的に使ってみてはいかがでしょうか。
ここでの仕掛けは
try-catch-finally
これは、blobがazureに存在しない場合のエラーを適切に処理することができます。
このサンプルコードは、私側で1つのファイルをアップロードするために動作するもので、複数のファイルをアップロードするために修正することができます。
$account_name ="xxx"
$account_key ="xxx"
$context = New-AzStorageContext -StorageAccountName $account_name -StorageAccountKey $account_key
#use this flag to determine if a blob exists or not in azure. And assume it exists at first.
$is_exist = $true
try
{
Get-AzStorageBlob -Container test3 -Blob a.txt -Context $context -ErrorAction Stop
}
catch [Microsoft.WindowsAzure.Commands.Storage.Common.ResourceNotFoundException]
{
#if the blob does not exist in azure, do the following
$is_exist = $false
Write-Output "the blob DOES NOT exists."
}
finally
{
#only execute the code when the blob does not exist in azure blob storage.
if(!$is_exist)
{
Set-AzStorageBlobContent -Container test3 -File "d:\myfolder\a.txt" -Blob a.txt -Context $context
Write-Output "uploaded!"
}
}
関連
-
[解決済み] New-AzureRmResourceGroupDeployment コマンドレットで追加のパラメータを渡す方法
-
[解決済み] AADSTS900144:レガシー開発者ポータルを使用する場合、リクエストボディに次のパラメータ 'scope' を含める必要があります。
-
[解決済み] バックエンドの初期化が必要なため、"terraform init" を実行してください。
-
[解決済み] レガシーAzure MFAをPhoneFactorで使用すると、エラー149が発生します。
-
[解決済み] ARMのテンプレートです。パラメータで名前を設定したリソースを参照する方法
-
[解決済み] Terraformのdepends_onとモジュール
-
[解決済み】Azure WebjobsとAzure Functionsの比較:選び方
-
[解決済み] Azure Blob StorageとFile Serviceの比較【終了しました】。
-
[解決済み] Azureです。Azureにデプロイされたファイルを表示する方法はありますか?
-
[解決済み] Azure SQL データベース Bacpac ローカルリストア
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Azure Kubernetes "az aks get-credentials "コマンドの実行時のエラーについて
-
[解決済み] Set-AzStorageBlobContentを使用して、プロンプトなしで新しいコンテンツのみをアップロードする。
-
[解決済み] "'New-AzureStorageContext' is not recognized," Yet the Module is Installed (モジュールはインストールされている)
-
[解決済み] コンテナにアンレディステータスがある」と表示される。Kubernetesで「[]」というエラーが発生する
-
[解決済み] レガシーAzure MFAをPhoneFactorで使用すると、エラー149が発生します。
-
[解決済み] Connect-AzAccount - azureのデバイス認証を回避する方法は?
-
[解決済み] AzureリソースグループURL
-
[解決済み] Azureはどのようなスタック/プログラミング言語で書かれているのですか?
-
[解決済み】Azure Web SiteとAzure Web Roleの違いは何ですか?
-
[解決済み] Azure Blob StorageとFile Serviceの比較【終了しました】。