Длина строки предоставляет неверную информацию - PullRequest
0 голосов
/ 11 июня 2019

Я хочу определить, имеет ли машина только один или несколько разделов, но я хочу просматривать только физические диски.

Я перечисляю диски и затем удаляю мусор из решения:

# get all partitions from physical drives in the machine
$temp_string = [System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'} | Select-Object -Property RootDirectory

# remove garbage strings like
# "RootDirectory"
# "-------------"
$drives = $temp_string -replace("RootDirectory","") -replace("-------------","") -replace("@{=","") -replace("}","")


# print out how many drives we have:
$drives
C:\
D:\
G:\
# print how many characters have a result
$drives.Length
3

Я ожидаю, что на выходе будет количество символов для всех разделов, а не только одна строка.Он всегда показывает только 3 символа, даже если у вас больше разделов, чем 1.

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

Я думаю, что вы ищете Count, а не length.Кроме того, PowerShell всегда возвращает объекты.С этим легко работать.

enter image description here

Я могу перейти к более подробной информации, например:

enter image description here

enter image description here

Так что это то, что вам действительно нужно.

$temp_string.RootDirectory.name.count
1 голос
/ 11 июня 2019

Попробуйте использовать объекты WMI:

@(Get-WmiObject -Class Win32_logicaldisk | Where-Object {$_.DriveType -eq 3}).Count

Из WMI:

0 = Unknown
1 = No Root Directory
2 = Removable Disk
3 = Local Disk
4 = Network Drive
5 = Compact Disc
6 = RAM Disk
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...