如何使用PowerShell 7在Azure中获取任何Blob属性
我正在使用下面的代码访问和检索Azure中的blob属性。我希望将此函数设置为通用函数,这样我就可以使用任何“属性”名称调用它,而不是像下面硬编码的那样仅检索“IsServerEncrypted”属性:如何使用PowerShell 7在Azure中获取任何Blob属性,azure,powershell,azure-storage-blobs,powershell-7.0,Azure,Powershell,Azure Storage Blobs,Powershell 7.0,我正在使用下面的代码访问和检索Azure中的blob属性。我希望将此函数设置为通用函数,这样我就可以使用任何“属性”名称调用它,而不是像下面硬编码的那样仅检索“IsServerEncrypted”属性: function GetBlobProperty { Param( [parameter(Mandatory = $true)] [String] $blobProperty, # <<<<<=I want to retrieve
function GetBlobProperty {
Param(
[parameter(Mandatory = $true)] [String] $blobProperty, # <<<<<=I want to retrieve any property
[parameter(Mandatory = $true)] [String] $storageAccountName,
[parameter(Mandatory = $false)] [String] $storageAccountKey,
[parameter(Mandatory = $false)] [String] $containerName,
[parameter(Mandatory = $false)] [String] $blobName
)
$ctx = GetStorageContext $storageAccountName $storageAccountKey
$Blobs = Get-AzStorageBlob -Container $containerName -Context $ctx
$retValue = ""
ForEach ($Blob in $Blobs){
#Write-Host $Blob.Name
if($Blob.Name.IndexOf($blobName) -ge 0)
{
Write-Host $Blob.Name
$retValue = $Blob.ICloudBlob.Properties.IsServerEncrypted #I want to pass $blobProperty here
break;
}
}
return $retValue
}
函数GetBlobProperty{
参数(
[parameter(Mandatory=$true)][String]$blobProperty,#您可能只需执行$Blob.ICloudBlob.Properties.$blobProperty
并检查属性是否存在(非空)
函数获取BlobProperty{
参数(
[参数(必需=$true)][字符串]$blobProperty,
[参数(必需=$true)][字符串]$storageAccountName,
[参数(必需=$false)][字符串]$storageAccountKey,
[参数(必需=$false)][字符串]$containerName,
[参数(必需=$false)][字符串]$blobName
)
$ctx=New-AzStorageContext-StorageAccountName$StorageAccountName-StorageAccountKey$StorageAccountKey
$Blobs=Get-AzStorageBlob-Container$containerName-Context$ctx
$retValue=$null
ForEach($Blob中的Blob){
#写入主机$Blob.Name
if($Blob.Name.IndexOf($blobName)-ge 0)
{
写入主机$Blob.Name
if($null-ne$Blob.ICloudBlob.Properties.$blobProperty){
$retValue=$Blob.ICloudBlob.Properties.$blobProperty
打破
}
}
}
返回$retValue
}
虽然我更喜欢使用检查属性是否存在:
函数获取BlobProperty{
参数(
[参数(必需=$true)][字符串]$blobProperty,
[参数(必需=$true)][字符串]$storageAccountName,
[参数(必需=$false)][字符串]$storageAccountKey,
[参数(必需=$false)][字符串]$containerName,
[参数(必需=$false)][字符串]$blobName
)
$ctx=New-AzStorageContext-StorageAccountName$StorageAccountName-StorageAccountKey$StorageAccountKey
$Blobs=Get-AzStorageBlob-Container$containerName-Context$ctx
$retValue=$null
ForEach($Blob中的Blob){
#写入主机$Blob.Name
if($Blob.Name.IndexOf($blobName)-ge 0)
{
写入主机$Blob.Name
if(获取成员-InputObject$Blob.ICloudBlob.Properties-Name$blobProperty-MemberType属性){
$retValue=$Blob.ICloudBlob.Properties.$blobProperty
打破
}
}
}
返回$retValue
}
您可能只需执行$Blob.ICloudBlob.Properties.$blobProperty
并检查属性是否存在(不为null)
函数获取BlobProperty{
参数(
[参数(必需=$true)][字符串]$blobProperty,
[参数(必需=$true)][字符串]$storageAccountName,
[参数(必需=$false)][字符串]$storageAccountKey,
[参数(必需=$false)][字符串]$containerName,
[参数(必需=$false)][字符串]$blobName
)
$ctx=New-AzStorageContext-StorageAccountName$StorageAccountName-StorageAccountKey$StorageAccountKey
$Blobs=Get-AzStorageBlob-Container$containerName-Context$ctx
$retValue=$null
ForEach($Blob中的Blob){
#写入主机$Blob.Name
if($Blob.Name.IndexOf($blobName)-ge 0)
{
写入主机$Blob.Name
if($null-ne$Blob.ICloudBlob.Properties.$blobProperty){
$retValue=$Blob.ICloudBlob.Properties.$blobProperty
打破
}
}
}
返回$retValue
}
虽然我更喜欢使用检查属性是否存在:
函数获取BlobProperty{
参数(
[参数(必需=$true)][字符串]$blobProperty,
[参数(必需=$true)][字符串]$storageAccountName,
[参数(必需=$false)][字符串]$storageAccountKey,
[参数(必需=$false)][字符串]$containerName,
[参数(必需=$false)][字符串]$blobName
)
$ctx=New-AzStorageContext-StorageAccountName$StorageAccountName-StorageAccountKey$StorageAccountKey
$Blobs=Get-AzStorageBlob-Container$containerName-Context$ctx
$retValue=$null
ForEach($Blob中的Blob){
#写入主机$Blob.Name
if($Blob.Name.IndexOf($blobName)-ge 0)
{
写入主机$Blob.Name
if(获取成员-InputObject$Blob.ICloudBlob.Properties-Name$blobProperty-MemberType属性){
$retValue=$Blob.ICloudBlob.Properties.$blobProperty
打破
}
}
}
返回$retValue
}