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-ID: 246575

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

Ausgedruckt am: 17.11.2024 um 03:11 Uhr

colinardo
colinardo 15.08.2014 aktualisiert um 10:40:04 Uhr
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
mguenth83
mguenth83 15.08.2014 um 11:09:57 Uhr
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
mguenth83
mguenth83 15.08.2014 um 11:16:14 Uhr
Goto Top
Habs selber...
hab die Zeile hinzugefügt bei Menue erzeugen..
$Printer = ($Printers)[$i-1]
colinardo
colinardo 15.08.2014, aktualisiert am 16.08.2014 um 13:03:55 Uhr
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!
mguenth83
mguenth83 15.08.2014 um 11:42:40 Uhr
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
colinardo
colinardo 15.08.2014 um 11:47:05 Uhr
Goto Top
Zitat von @mguenth83:
Kann man die Größen der Spalten irgendwie noch anpassen?
$arr | ft -AutoSize
colinardo
colinardo 16.08.2014 um 13:04:03 Uhr
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.