Powershell Holen Sie sich Dateifreigaben in ein Array

778
The Woo

Ich versuche, eine Liste von Ordnern zu erhalten, die auf einem Dateiserver freigegeben sind, und diese in einem Array abzulegen. Dies ist der Code, den ich im Moment habe:

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

Dies gibt die Ordner aus, die freigegeben sind (mit Ausnahme der $ -Anteile), aber die Ausgabe fasst sie alle in einer langen Variablen in einer Zeile zusammen.

Wie füge ich das mit jedem Datensatz in einer neuen Zeile in ein Array ein?

Aktualisieren:

Für diejenigen, die daran interessiert sind, habe ich die akzeptierte Antwort verwendet und es hat gut funktioniert. Ich war eigentlich hinter der "Name" -Instanz jedes Ordners und habe daher folgenden Code verwendet:

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

Also jeder Name der Ordner, die in $ FileServerShares in einem Array freigegeben sind.

0

1 Antwort auf die Frage

1
dangph

$FileServerSharesist bereits ein Array (auch ohne [array]Angabe):

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

Wenn aus irgendeinem Grund ein Array von Freigabeobjekten in eine Zeichenfolge konvertiert wird, wird jede Freigabe in dieselbe Zeile gestellt. Ich weiß nicht, warum das so ist, aber Sie könnten die Freigabeobjekte in Strings konvertieren, sodass Sie ein Array von Strings haben. String-Arrays werden in mehrzeilige Strings konvertiert.

$FileServer = "ServerName"  $FileServerShares = gwmi win32_Share -ComputerName $FileServer | Where-Object {$_.type -eq '0'} |  Where {$_.name -notlike "*$*"} | % { $_.ToString() }  Write-Host $FileServerShares 
Für alle anderen, die Strings in Arrays verwenden möchten, lautet der nächste Teil meines Codes: Foreach ($ Share in $ FileServerShares) The Woo vor 9 Jahren 0