Лучший отвечающий
PowerShell: Преобразование значений объектов в String

Вопрос
-
Есть объект $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:"}).freespaceenjoy
- Помечено в качестве ответа ILYA [ sie ] SazonovModerator 8 ноября 2010 г. 14:26
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]"- Помечено в качестве ответа ILYA [ sie ] SazonovModerator 8 ноября 2010 г. 14:26
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 -
эм....ни один из вышеперечисленных вариантов не работает
($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
[]Короче не работает
4 сентября 2008 г. 12:42 -
Все, получилось.
Нужно было просто использовать
Code Snippet$ServerDisks=Get-WmiObject Win32_LogicalDisk -computer server -filter "drivetype = 3"
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:"}).freespaceenjoy
- Помечено в качестве ответа ILYA [ sie ] SazonovModerator 8 ноября 2010 г. 14:26
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]"- Помечено в качестве ответа ILYA [ sie ] SazonovModerator 8 ноября 2010 г. 14:26
4 сентября 2008 г. 14:06Модератор