Powershell Obter compartilhamentos de arquivos em matriz

0

Estou tentando obter uma lista de pastas compartilhadas em um servidor de arquivos e colocá-las em uma matriz. Este é o código que tenho no momento:

$FileServer = "ServerName"

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

Write-Host $FileServerShares

Isso gera as pastas compartilhadas (excluindo os $ compartilhamentos também), mas a saída coloca todas em uma variável longa em uma linha.

Como coloco isso em uma matriz com cada registro em uma nova linha?

Atualização:

Para aqueles que estão interessados, usei a resposta aceita e funcionou muito bem. Na verdade, eu estava atrás da instância "Name" de cada pasta e usei código assim:

$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()}

Portanto, cada nome das pastas que são compartilhadas agora em uma matriz em $ FileServerShares.

    
por The Woo 17.06.2014 / 05:51

1 resposta

1

$FileServerShares já é uma matriz (mesmo sem o especificador [array] ):

PS> $FileServerShares.getType()

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

Por algum motivo, quando uma matriz de objetos compartilhados é convertida em uma sequência, cada compartilhamento é colocado na mesma linha. Não sei por que isso acontece, mas o que você pode fazer é converter os objetos de compartilhamento em strings para que você tenha uma matriz de strings. Arrays de strings são convertidos em strings de múltiplas linhas.

$FileServer = "ServerName"

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

Write-Host $FileServerShares
    
por 17.06.2014 / 08:00