2016-04-06 4 views
0

Я хотел бы знать, есть ли способ добавить оператор If в выражении WMI-объекта | выберите ...powershell wmi-object | select

вот что у меня есть:

Get-WmiObject -Class Win32_LogicalDisk -Filter DriveType=3 -ComputerName $ServersinFarm | Select @{Name='Server Name';Expression={$_.SystemName}} , DeviceID , @{Name="size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}}, @{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} 

и я хочу, чтобы добавить столбец к выходу Если Freespace < 10gb, который пишет ошибку

Есть идеи?

+1

Теперь я чувствую, что это трюк, но есть ли причина, почему вы пытаетесь сделать это одним лайнером? –

ответ

0

Вы не можете условно добавить расчетное имущество. Что-то, как это будет работать, хотя:

Get-WmiObject -Class Win32_LogicalDisk ... | 
    Select ..., Freespace, ... | 
    ForEach-Object { 
     if ($_.freespace -lt 10GB) { 
      $_ | Add-Member -Name 'Status' -Type NoteProperty -Value 'Error' 
     } 
     $_ 
    } | Select-Object -Exclude Freespace 

Что вы можете сделать с расчетными свойствами добавить свойство, указывающее состояние в зависимости от количества свободного пространства:

Get-WmiObject -Class Win32_LogicalDisk ... | 
    Select ..., @{n='Status';e={if ($_.Freespace -lt 10GB) {'Error'} else {'OK'}} 
Смежные вопросы