none
Мониторинг свободного места на диске PowerShell. RRS feed

  • Вопрос

  • Здравствуйте. Не получается отфильтровать не нужные мне элементы. Я хотел бы вывести только те строки в которых свободного места меньше 100 Гб.

    Где я ошибаюсь?

    Код:

    Get-WMIObject Win32_Volume -filter "DriveType=3" -computer (Get-Content D:\Script\computers.txt) | Select SystemName, Caption,
    @{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | Where {($_.Caption -notlike "*Volume*") -and ($_.FreeSpace/1gb -lt 100)} |
    ft -autosize


    Вывод скрипта:

    SystemName Caption freespace(GB)
    ---------- ------- -------------
    A07        E:\     18,9
    A07        F:\     1 425,0
    A07        C:\     21,9
    A07        D:\     666,2
    R37        E:\     98,5
    R37        C:\     116,6


Ответы

  • Фильтр проще делать либо в Get-WmiObject или после него, но не после Select, т.к. получается строка,а не числовой тип и требуется дополнительное преобразование.

    1) Get-WMIObject

    Get-WMIObject Win32_Volume -filter "DriveType=3 and FreeSpace < '$(100gb)'"

    2)  После Get-WMIObject | Where

    Get-WMIObject Win32_Volume -filter "DriveType=3" -computer (Get-Content D:\Script\computers.txt) |  Where {($_.Caption -notlike "*Volume*") -and ($_.FreeSpace/1gb -lt 100)} | Select SystemName, Caption, @{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | ft -autosize

    3) После Select

    Get-WMIObject Win32_Volume -filter "DriveType=3" -computer (Get-Content D:\Script\computers.txt)  | Select SystemName, Caption, @{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | Where {($_.Caption -notlike "*Volume*") -and ([float]::parse($_."FreeSpace(GB)") -lt 100)} | ft -autosize
    

    Отвечающий

Все ответы

  • ($_.{FreeSpace(GB)} -lt 100)

    У вас после селекта параметра фриспейс больше нет, зато есть другой параметр

    Модератор
  • Фильтр проще делать либо в Get-WmiObject или после него, но не после Select, т.к. получается строка,а не числовой тип и требуется дополнительное преобразование.

    1) Get-WMIObject

    Get-WMIObject Win32_Volume -filter "DriveType=3 and FreeSpace < '$(100gb)'"

    2)  После Get-WMIObject | Where

    Get-WMIObject Win32_Volume -filter "DriveType=3" -computer (Get-Content D:\Script\computers.txt) |  Where {($_.Caption -notlike "*Volume*") -and ($_.FreeSpace/1gb -lt 100)} | Select SystemName, Caption, @{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | ft -autosize

    3) После Select

    Get-WMIObject Win32_Volume -filter "DriveType=3" -computer (Get-Content D:\Script\computers.txt)  | Select SystemName, Caption, @{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | Where {($_.Caption -notlike "*Volume*") -and ([float]::parse($_."FreeSpace(GB)") -lt 100)} | ft -autosize
    

    Отвечающий