驱动器列表作为字符串数组
List of drives as string array
我正在使用第三方 power-shell 库。该库方法中的函数参数之一是字符串数组。此参数值需要包含硬盘驱动器。我有以下脚本来检索驱动器
[string[]] $drives = $null;
gwmi win32_logicaldisk -filter "drivetype = 3" | Select Name | % { $drives += $_.Name }
$drives -is [array]
Write-Output $drives
这个脚本的输出是
True
C:
D:
但是第三方库似乎不接受这个数组。如果我按如下方式对驱动器进行硬编码,那么一切正常。
$drives = @('C:', 'D:')
我的问题是我以字符串数组形式检索驱动器的方式是否正确?请注意,我需要对抗 Power-Shell 2.0
Get-WMIObject
正在返回 ManagementObject
个对象的集合,而您的 Select-object
正在选择其中的一个 属性 用于显示. IOW,你已经得到了一个数组(不需要在管道中做你的 foreach-object
),你只需要正确的 kind 数组(一个字符串,在这个例)。
如果您将 -expandproperty
参数传递给 select-object
,您将获得适合您需要的字符串数组(在本例中)。
$drives = get-wmiobject win32_logicaldisk -filter "drivetype=3" | select-object -expandproperty name
write-output $drives
第三方库看到的脚本输出包括 $drives -is [array]
的输出(即使您没有在脚本中明确使用它,如此处所示,write-output
是暗示),这也引起了一些惊愕。将其输出到不同的流(如 Write-Verbose
或 write-debug
),或者完全忽略它。
我正在使用第三方 power-shell 库。该库方法中的函数参数之一是字符串数组。此参数值需要包含硬盘驱动器。我有以下脚本来检索驱动器
[string[]] $drives = $null;
gwmi win32_logicaldisk -filter "drivetype = 3" | Select Name | % { $drives += $_.Name }
$drives -is [array]
Write-Output $drives
这个脚本的输出是
True
C:
D:
但是第三方库似乎不接受这个数组。如果我按如下方式对驱动器进行硬编码,那么一切正常。
$drives = @('C:', 'D:')
我的问题是我以字符串数组形式检索驱动器的方式是否正确?请注意,我需要对抗 Power-Shell 2.0
Get-WMIObject
正在返回 ManagementObject
个对象的集合,而您的 Select-object
正在选择其中的一个 属性 用于显示. IOW,你已经得到了一个数组(不需要在管道中做你的 foreach-object
),你只需要正确的 kind 数组(一个字符串,在这个例)。
如果您将 -expandproperty
参数传递给 select-object
,您将获得适合您需要的字符串数组(在本例中)。
$drives = get-wmiobject win32_logicaldisk -filter "drivetype=3" | select-object -expandproperty name
write-output $drives
第三方库看到的脚本输出包括 $drives -is [array]
的输出(即使您没有在脚本中明确使用它,如此处所示,write-output
是暗示),这也引起了一些惊愕。将其输出到不同的流(如 Write-Verbose
或 write-debug
),或者完全忽略它。