mguenth83
Goto Top

Hashtable erstellen

Hi,
ich wollte kurz fragen ob jemand weiss wie man in Powershell ein Hashtable erzeugt und diese nach und nach füllt. Damit dann zum schluss ein PS Object erstellt werden kann.

Ich habe nämlich eine Forechschleife und die Daten die darauf resultieren sollen der Hashtabelle angefügt werden damit ich später ein psobject draus machen kann.


So sollte es später aussehen:

Zeile Druckername
------------------
1 2

Hinzufügen in der foreach schleife

der wert 2 und 3

Gruß
Matze

Content-Key: 246575

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

Printed on: April 16, 2024 at 11:04 o'clock

Member: colinardo
colinardo Aug 15, 2014 updated at 08:40:04 (UTC)
Goto Top
$ht = @{}
1..10 | %{$ht[$_] = "BlaBla"}  
$ht
oder direkt ein Objekt erzeugen und es in einem Array hinzufügen, das entspricht vermutlich eher deinen Vorstellungen:
$arr = @()
for ($i = 1; $i -le 10; $i++){
    $arr += new-Object PSObject -Property @{"Zeile"=$i;"Druckername"="BlaBla"}  
}
$arr
Working with Hash Tables

Grüße Uwe
Member: mguenth83
mguenth83 Aug 15, 2014 at 09:09:57 (UTC)
Goto Top
Hi Uwe...
super jetzzt weiss ich wieder mehr...

öhm habe nur das Problem das ich jetzt noch das den gerade verarbeitendes Object angeben muss...

hier mal der Code
$Location = Read-Host Servername:
$Server = "$Location"+"W8-S-DC01"  

$Session = New-PSSession -ComputerName $Server
#Enter-PSSession -ComputerName $Server
Import-PSSession -Session $Session -CommandName "Restart-Service" -Prefix Remote | Out-Null  

#Druckernamen mit Jobs
$Printers = ((Get-WmiObject -ComputerName $Server -Class win32_PrintJob).Name).Split(",") | where {$_ -like "$Location*"}  
$printers_Count = $Printers.Count

#Tabelle erzeugen
$arr = @()

#Menue erzeugen
for ($i = 1; $i -le $printers_Count; $i++){
    $arr += new-Object PSObject -Property @{"Zeile"=$i;"Druckername"="$Printer"}  
}

$arr

#Spooler neustarten
#Get-RemoteRestart-Service Spooler

Remove-PSSession -ComputerName $Server
Member: mguenth83
mguenth83 Aug 15, 2014 at 09:16:14 (UTC)
Goto Top
Habs selber...
hab die Zeile hinzugefügt bei Menue erzeugen..
$Printer = ($Printers)[$i-1]
Member: colinardo
colinardo Aug 15, 2014, updated at Aug 16, 2014 at 11:03:55 (UTC)
Goto Top
würde Zeile 9 so schreiben:
$Printers = Get-WmiObject -ComputerName $Server -Class win32_PrintJob | ?{$_.Name -like "*$Location*"} 
und Zeile 17 dann
$arr += new-Object PSObject -Property @{"Zeile"=$i;"Druckername"=$Printers[$i-1].Name}
Grüße Uwe

Objekte solange Objekte sein lassen wie möglich lautet die Devise!
Member: mguenth83
mguenth83 Aug 15, 2014 at 09:42:40 (UTC)
Goto Top
Hi,
super leider habe ich noch ein lettes Problem...da stand ich schon vor Wochen davor uns hab nur net Notlösung gehabt...

und zwar ist der Output irgendwie ganz nach rechts geschoben in der Console....es sieht so aus als wenn die Tabelle zu viele Leerzeichen enhält, besonders die Spalte "Zeile"

Kann man die Größen der Spalten irgendwie noch anpassen?

Danke und Merci für die Hilfe face-wink
Member: colinardo
colinardo Aug 15, 2014 at 09:47:05 (UTC)
Goto Top
Zitat von @mguenth83:
Kann man die Größen der Spalten irgendwie noch anpassen?
$arr | ft -AutoSize
Member: colinardo
colinardo Aug 16, 2014 at 11:04:03 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.