Обходной путь для передачи к if-заявлению в powershell? - PullRequest
0 голосов
/ 28 сентября 2018

Я хотел передать объект в оператор PowerShell if, но он не работает:

for($i = 1; $i -le 70; $i++) {
    Get-AzureRmRedisCache -Name "isi$i" -ResourceGroupName "iaas101" | if ($_.ProvisioningState -eq 'Succeeded') {
    Remove-AzureRmRedisCache $_ -Force
}}

«Термин« если »не распознается как имя командлета, функции,файл сценария или работающая программа ".Так что мне делать вместо этого?

1 Ответ

0 голосов
/ 28 сентября 2018

вам нужно сделать что-то вроде этого:

Get-AzureRmRedisCache -Name "isi$i" -ResourceGroupName "iaas101" | where { $_.ProvisioningState -eq 'Succeeded' } | 
    Remove-AzureRmRedisCache -Force

Вы фильтруете с помощью Where-Object.

В качестве альтернативы вы можете сделать:

$cache = Get-AzureRmRedisCache -Name "isi$i" -ResourceGroupName "iaas101"
if ( $cache.ProvisioningState -eq 'Succeeded' ) { do stuff }

или это (Уродливо):

if ( (Get-AzureRmRedisCache -Name "isi$i" -ResourceGroupName "iaas101").ProvisioningState -eq 'Succeeded' ) { do stuff }
...