【发布时间】:2018-07-29 23:36:56
【问题描述】:
我有一个 powershell 脚本,可以将 Azure blob 存储中的文件下拉到本地文件夹中。一旦它拉下一个文件,它就会创建一个同名的 0 字节文件,但扩展名为 .succeeded(例如 foo.csv 变为 foo.csv.succeeded)。原始文件和 .succeeded 文件都保留在 blob 存储中。
我想修改我的脚本,以便在再次运行脚本时不会重新下载具有 .succeeded 副本的文件。我试图为此比较两组 blob,但我无法让它工作。这是我拥有的代码的 sn-p:
$ext = '.succeeded'
$ctx = New-AzureStorageContext -sasToken $sasToken -StorageAccountName $accountname
$blobs = Get-AzureStorageBlob -Container $blob_source_container -Context $ctx
# Get list of all blobs from specified folder with the '.succeeded' extension
$succeeded = Get-AzureStorageBlob -Container $blob_source_container -Context $ctx |
Where-Object { (($_.Name -like "$blob_source_folder*") -or ($blob_source_folder -eq '*')) -and ($_.Name -like "*$sidecar_extension") }
# Strip the extension from the blob names ending in '.succeeded'
foreach($blob in $succeeded) {
$blob.Name = $blob.Name.Substring(0, $blob.Name.LastIndexOf('.'))
}
foreach($blob in $blobs) {
if($blob.Name -notlike "*$ext"){
if($blob.Name -notin $succeeded | Select Name) {
# do stuff
}
}
}
如果我在 do stuff 语句中放置一个 Write-Output $blob.Name,它会打印所有可以下载的 blob,无论它们是否在 $succeeded 中。
我这一天大部分时间都在这样做,我即将放弃。我错过了什么基本的东西吗?
【问题讨论】:
-
$sidecar_extension ($_.Name -like "*$sidecar_extension") 中有什么?这应该是 $ext 吗?
-
是的。我的错。我的问题中的代码 sn-p 是“简化的”。在实际脚本中,它是 $sidecar_extension。在示例中是 $ext
标签: powershell azure azure-storage