mendo28
Goto Top

Powershell in Listbox ausgabe anpassen

Guten Tag zusammen

Ich möchte das bei der Listboxausgabe nur die IP und der Ordner(\\XX.X.XX.X\Ordner) angezeigt wird.

Jedoch werden bei mir die Netzlaufwerke wie folgt aufgelistet:

@{Providername=\\XX.X.XX.X\Ordner}
@{Providername=\\XX.X.XX.X\Ordner}
@{Providername=\\XX.X.XX.X\Ordner}

Befehl mit dem ich die Netzlaufwerke anzeigen lasse:

$NetworkShares = Get-WmiObject -Class Win32_LogicalDisk | Select Providername
$listBox_share.DataSource = $NetworkShares;

Hättet ihr eine Idee wie ich diese ohne das @und Providername anzeigen lassen kann?

Content-Key: 343765

Url: https://administrator.de/contentid/343765

Printed on: April 24, 2024 at 06:04 o'clock

Mitglied: 133417
133417 Jul 18, 2017 updated at 13:10:43 (UTC)
Goto Top
Und täglich grüßt das Murmeltier
Einfach -Expand hinzufügen ...
$NetworkShares = Get-WmiObject -Class Win32_LogicalDisk | Select -Expand Providername
Immer dran denken, Powershell arbeitet objektorientiert. Und das was du da siehst ist die Ausgabe einer Hashtable in eine Stringeigenschaft, deswegen sieht das so aus wenn du das Objekt nicht expandierst.

Gruß
Member: Mendo28
Mendo28 Jul 18, 2017 at 13:45:47 (UTC)
Goto Top
Vielen Dank für die schnelle Antwort.

Es funktioniert leider immer noch nicht, denn nach dem einfügen von -Expand kommt diese Fehlermeldung:

Befehl:
$allNetworkShares = Get-WmiObject -Class Win32_LogicalDisk | Select -Expand Providername
$listBox_share.DataSource = $allNetworkShares;

Fehlermeldung:
ERROR: Select-Object : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "obj" NULL ist. Ändern Sie den Wert des Arguments "obj" in einen Wert ung
ERROR: leich NULL.
ERROR: Bei C:\Users\LyonAD\Desktop\Tool\Tool.ps1:95 Zeichen:68
ERROR: + $allNetworkShares = Get-WmiObject -Class Win32_LogicalDisk | Select <<<< -Expand Providername
ERROR: + CategoryInfo : InvalidArgument: (face-smile [Select-Object], PSArgumentNullException
ERROR: + FullyQualifiedErrorId : ArgumentNull,Microsoft.PowerShell.Commands.SelectObjectCommand
ERROR:

Wo kann man den obj Wert als NULL definieren? oder an was liegt es das nichts mehr angezeigt wird?

Gruss
Mitglied: 133417
Solution 133417 Jul 18, 2017 updated at 15:48:29 (UTC)
Goto Top
Erst mal die richtige WMI Klasse verwenden! Dann prüfen ob die Variable überhaupt Inhalt hat und erst dann der Listbox als Datenquelle liefern!
    $drives = gwmi Win32_MappedLogicalDisk | select -ExpandProperty ProviderName
    if ($drives){
        $listBox_share.DataSource = @($drives)
    }
Geht hier einwandfrei! Da hier als DataSource nur eine IList benutzt werden darf das zusätzliche Klammern der Variablen in ein Array für den Fall das nur ein Element zurückgegeben wird.

p.s. Get-WMIObject ist schon lange veraltet stattdessen nimmt man heute Get-CIMInstance.

Gruß