2017-12-28 24 views
0

Azure 개체 (가상 컴퓨터, 데이터웨어 하우스 또는 Analysis Services)의 컬렉션이 있고 해당 컬렉션을 반복하면서 특정 태그가있는 개체를 필터링하려고합니다.Azure 개체를 반복하고 태그에 필터를 적용하십시오.

enter image description here

예를 들어 이 값이 "생산"과 "환경"이라는 태그가 없습니다 수행하는 모든 분석 서비스를 얻을. 나는 (성공하지 않고 여러 가지 방법을 시도)가 어디-개체 필터

cls 

# Login to Azure 
#Login-AzureRmAccount | Out-Null 

# Selecting the right subscription 
#Select-AzureRmSubscription -SubscriptionName "MySubscription" | Out-Null 


# Get all my Analysis Services, but leave out those with the tag Environment=Production 
$AnalysisServicesServers = Get-AzureRmAnalysisServicesServer | Where-Object {$_.Tag -notcontains @{Environment="Production";}} 

# Loop Through the collection and to something 
foreach ($AnalysisServicesServer in $AnalysisServicesServers) 
{ 
    $AnalysisServicesServer              # Show all properties 
    Write-Host "1 Name $($AnalysisServicesServer.Name)"       # Show Name 
    Write-Host "2 Tags count [$($AnalysisServicesServer.Tag.Keys.Count)]"  # Show # of tags 
    Write-Host "3 Tags Values [$($AnalysisServicesServer.Tag.Values)]"   # Show values 
    Write-Host "4 Tags Keys [$($AnalysisServicesServer.Tag.Keys)]"    # Show keys 
    Write-Host "5 Tags Keys [$($AnalysisServicesServer.Tag.Keys["Environment"])]" # NOT WORKING 
} 

enter image description here

답변

2

를 지정하려면 어떻게

는 그래서 Tag 속성은 해시 테이블입니다. 해시 테이블의 값에 액세스하는 방법은 여러 가지가 있지만 이미 시도한 것을 사용하지만 구문을 약간 잘못 이해했습니다. 다음은 내가 원하는 것을 성취하는 방법입니다.

당신이 그들에 '환경'태그가없는 결과가있는 경우 오류를 던질 수 있지만, 그것은 당신에게 당신이 찾고있는 결과를 얻을 수 있습니다

$AnalysisServicesServers = Get-AzureRmAnalysisServicesServer | Where-Object {$_.Tag['Environment'] -ne "Production"} 
.

+0

매력처럼 작동합니다! – Joost