我目前正在使用 Powershell 脚本来管理 Windows-Azure 中的 BlobStorage 内容。我想要一个脚本来读取文本文件的内容并显示 BlobStorage 中以此内容开头的文件名。我正在寻找一个通配符搜索,它列出了 BlobStorage 中的名称,该名称以文本文件中指定的内容开头。
我想到了一个循环,它搜索文本文件中的每一行,并在 BlobStorage 中查找以文本文件中指定内容开头的文件名。
*如果我们在文本文件中有例如 2 行:*
43345-sdfssd-42342-sdfsf
32423-asdsad-23424-dghfs
BlobStorage 中的文件名是:
43345-sdfssd-42342-sdfsf-250.PNG
43345-sdfssd-42342-sdfsf-650.PNG
92323-asadad-12342-sdfds-1600.PNG
我想将文本文件中的 ID 与 BlobStorage 文件的名称进行比较,并显示 BlobStorage 中包含此 ID 的所有文件的完整文件名。
为了进一步说明这一点,我假设:
foreach (ID in textfile)
{
files = find files in BlobStorage with name that starts with ID (ListBlobsWithPrefix?)
foreach (textfile in files)
{
Write filename to console
}
}
到目前为止,我已经成功地连接到我的 blobstorage 并且它工作正常,我可以在图像容器中列出 Blob 的名称。我已经检查过一切都可以读取文本文件并将内容打印到控制台。我没有设法做的是将文本文件 ID 与 BlobStorage 中 Blob 的文件名进行比较,并在以 ID 开头的 BlobStorage 中打印结果。我已经尝试了很多解决方案,但没有任何运气。
到目前为止,我已经想出了这个代码:
#Make a connection to my BlobStorage
$SAN = "XX"
$SAK="X"
$creds = New-Object Microsoft.WindowsAzure.StorageCredentialsAccountAndKey($SAN, $SAK)
$client = New-Object Microsoft.WindowsAzure.StorageClient.CloudBlobClient("https://$SAN.blob.core.windows.net",$creds)
$bro = New-Object Microsoft.WindowsAzure.StorageClient.BlobRequestOptions
$bro.UseFlatBlobListing = $true
#Add $images blobcontainer and use flatbloblisting to list blobnames
$imagecontainer = $client.GetBlobDirectoryReference("images")
$images = $imagecontainer.ListBlobs($bro)
#Add textfile and assign it to a variable
$InputFile = Get-Content C:\transcript\hej.txt
#Loop to find everything in the input file and compare it to matching filenames in blobstorage. Return filenames that starts with the ID/contains the ID in the inputfile.
foreach ($ID in Get-Content $InputFile) {
感谢进一步的帮助/解决方案。