Powershell 将文件共享放入阵列

Powershell 将文件共享放入阵列

我正在尝试获取文件服务器上共享的文件夹列表,并将它们放入数组中。这是我目前拥有的代码:

$FileServer = "ServerName"

[array]$FileServerShares = gwmi win32_Share -ComputerName $FileServer |
  Where-Object {$_.type -eq '0'} | 
  Where {$_.name -notlike "*$*"}

Write-Host $FileServerShares

这将输出共享的文件夹(也不包括 $ 共享),但输出将它们全部放入一行上的一个长变量中。

我如何将其放入一个数组中并且每条记录占一行?

更新:

对于那些感兴趣的人,我使用了可接受的答案,效果很好。我实际上是在寻找每个文件夹的“名称”实例,因此使用了如下代码:

$FileServer = "ServerName"

$FileServerSharesFullName = gwmi win32_Share -ComputerName $FileServer |
Where-Object {$_.type -eq '0'} |
Where {$_.name -notlike "*$*"} # This excludes the "dollar shares" from being selected

$FileServerShares = $FileServerSharesFullName.name | % {$_.ToString()}

因此,现在共享的每个文件夹的名称都位于 $FileServerShares 中的数组中。

答案1

$FileServerShares已经是一个数组(即使没有[array]说明符):

PS> $FileServerShares.getType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

出于某种原因,当共享对象数组转换为字符串时,每个共享都放在同一行。我不知道为什么会这样,但你可以将共享对象转换为字符串,这样你就有了一个字符串数组。字符串数组确实会转换为多行字符串。

$FileServer = "ServerName"

$FileServerShares = gwmi win32_Share -ComputerName $FileServer |
  Where-Object {$_.type -eq '0'} | 
  Where {$_.name -notlike "*$*"} |
  % { $_.ToString() }

Write-Host $FileServerShares

相关内容