Powershell Получить общий доступ к файлам в массиве

722
The Woo

Я пытаюсь получить список общих папок на файловом сервере и поместить их в массив. Вот код, который у меня есть на данный момент:

$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.

0

1 ответ на вопрос

1
dangph

$FileServerShares already is an array (even without the [array] specifier):

PS> $FileServerShares.getType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array 

For some reason, when an array of share objects is converted to a string, each share is put on the same line. I don't know why that is, but what you could do is convert the share objects to strings so that you have an array of strings. String arrays do get converted to multiline strings.

$FileServer = "ServerName" $FileServerShares = gwmi win32_Share -ComputerName $FileServer | Where-Object {$_.type -eq '0'} | Where {$_.name -notlike "*$*"} | % { $_.ToString() } Write-Host $FileServerShares 
Для всех, кто хочет использовать строки в массивах, следующая часть моего кода выглядит так: Foreach ($ Share in $ FileServerShares) The Woo 9 лет назад 0