none
PowerShell: Преобразование значений объектов в String RRS feed

  • Вопрос

  • Есть объект $ServerDisks со следующими полями и значениями:

     

    DeviceId                             FreeSpaceOnDisk
    --------                                ---------------
    C:                                      13
    D:                                      20
    E:                                      17
    F:                                      13
    X:                                      85
    Z:                                      127

     

    Как в string переменную $a получить значение INT свободного места, стоящее напротив DeviceId="X:"?

     

    3 сентября 2008 г. 13:43

Ответы

  • ибо:

    Code Snippet

    $ServerDisks=Get-WmiObject -computer server Win32_LogicalDisk | where {($_.drivetype -eq 3)} | Select DeviceId,FreeSpace
    $a = ($ServerDisks | ?{$_.deviceid -eq "x:"}).freespace

     

    enjoy

    4 сентября 2008 г. 13:32
  • Уберите форматирование!!!!!   Format-Table DeviceId,FreeSpace

     

    Code Snippet

    $ServerDisks=Get-WmiObject -computer server Win32_LogicalDisk | where {($_.drivetype -eq 3)}

    echo $ServerDisks

    $a= ($ServerDisks | where {$_.DeviceId -match "X:"}).freespace
    echo "[$a]"

     

     

    4 сентября 2008 г. 14:06
    Модератор

Все ответы

  • Code Snippet

    $a = $ServerDisks."X:"

     

     

    3 сентября 2008 г. 17:52
  • Vadims, боюсь так получится только в случае если $ServerDisks является хэш таблицей а DeviceID - ключем.

    В данном же случае можно сделать так:

    Code Snippet

     

    $a = ($ServerDisks | where {$_.DeviceId -eq "X:"}).FreeSpaceOnDisk

     

     

    4 сентября 2008 г. 2:44
    Модератор
  • Тогда уж

     

    $a = ($ServerDisks | where {$_.DeviceId -eq "X:"}).FreeSpace.ToString()

    4 сентября 2008 г. 8:13
    Модератор
  • или:

    [string]$a = ($ServerDisks | where {$_.DeviceId -eq "X:"}).FreeSpaceOnDisk

    4 сентября 2008 г. 8:18
  • эм....ни один из вышеперечисленных вариантов не работает Sad

     

    ($ServerDisks | where {$_.DeviceId -eq "X:"}) возвращает пустой объект NULL

     

    Думаю более правильно писать не "-eq", а ""-match" тк сравниваем строки, но это все равно не помогает.

     

    $a пустая,

    вопрос остаётся открытым...:

     

    4 сентября 2008 г. 12:35
  • вот код:

     

    Code Snippet

    $ServerDisks=Get-WmiObject -computer server Win32_LogicalDisk | where {($_.drivetype -eq 3)} | Format-Table DeviceId,FreeSpace

    echo $ServerDisks

    $a= ($ServerDisks | where {$_.DeviceId -match "X:"}).freespace
    echo "[$a]"

     

     

    вот вывод:

     

    DeviceId                                                                                                      FreeSpace
    --------                                                                                                      ---------
    C:                                                                                                          14133612544
    D:                                                                                                          20213964800
    E:                                                                                                          18085437440
    F:                                                                                                          13466382336
    X:                                                                                                          91642843136
    Z:                                                                                                         136429076480


    []

     

    Короче не работает Sad

    4 сентября 2008 г. 12:42
  • Все, получилось.

    Нужно было просто использовать

     

    Code Snippet

    $ServerDisks=Get-WmiObject Win32_LogicalDisk -computer server -filter "drivetype = 3"

     

     

    и -match
    4 сентября 2008 г. 13:19
  • ибо:

    Code Snippet

    $ServerDisks=Get-WmiObject -computer server Win32_LogicalDisk | where {($_.drivetype -eq 3)} | Select DeviceId,FreeSpace
    $a = ($ServerDisks | ?{$_.deviceid -eq "x:"}).freespace

     

    enjoy

    4 сентября 2008 г. 13:32
  • Уберите форматирование!!!!!   Format-Table DeviceId,FreeSpace

     

    Code Snippet

    $ServerDisks=Get-WmiObject -computer server Win32_LogicalDisk | where {($_.drivetype -eq 3)}

    echo $ServerDisks

    $a= ($ServerDisks | where {$_.DeviceId -match "X:"}).freespace
    echo "[$a]"

     

     

    4 сентября 2008 г. 14:06
    Модератор