字符串长度提供错误信息

时间:2019-06-11 09:26:35

标签: powershell

我想检测计算机上是否只有一个分区或多个分区-但我只想查看物理驱动器上的内容。

我列出了驱动器,然后从解决方案中删除了一些垃圾:

# 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

我希望输出是所有分区的字符数,而不仅仅是一行。 即使您的分区多于1,它始终只显示3个字符。

2 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是Count而不是length。此外,PowerShell始终返回对象。这很容易使用。

enter image description here

我可以进入更多细节,例如:

enter image description here

enter image description here

这就是您真正需要的。

$temp_string.RootDirectory.name.count

答案 1 :(得分:1)

尝试使用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