代码之家  ›  专栏  ›  技术社区  ›  Tim Lovell-Smith

在powershell中管道到if语句的解决方法?

  •  0
  • Tim Lovell-Smith  · 技术社区  · 6 年前

    我想通过管道将对象传输到PowerShell if语句,但它不起作用:

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

    术语“if”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。那我该怎么办呢?

    1 回复  |  直到 6 年前
        1
  •  0
  •   4c74356b41    6 年前

    你需要这样做:

    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 }