PowerShell Ausgabe der Variabel Zuweisung stimmt nicht. Warum ?
Hallo zusammen,
bin kein großer Script Schreiber, aber hier habe ich eine Problem wo ich nicht weiter komme.
Ich möchte mir alle Aktiven Angemeldeten User aus dem TS Anzeigen lassen.
Das Funktioniert soweit auch als Command Befehl nur wenn ich das Ergebnis in eine Variabel Schreibe., kommt nur noch „Müll“ raus:
hier der Code: (Get-TSSession = ist Zusatz Module zu PowerShell STerminalServices )
$all=Get-Content Z:\Datensicherung\TS-User-Suche\Server.txt | ForEach-Object { Get-TSSession -State Active -ComputerName $_ | Where-Object { $_.UserName -like $suche } | ft -AutoSize }
So soll es aussehen:
Server SessionID State IPAddress ClientName WindowStationName UserName
--------- ----- --------- ---------- ----------------- --------
Server15 6 Active 192.168.1.112 PC1055 RDP-Tcp#832 Dom \User1
Server15 7 Active 192.168.178.28 ARBEITSPLATZ-1 RDP-Tcp#833 Dom \User2
Server15 3 Active 192.168.0.34 HUKPC04 RDP-Tcp#838 Dom \User3
Server15 10 Active 192.168.1.101 C011 RDP-Tcp#839 Dom \user4
Server15 2 Active 192.168.2.100 GUSTAVO RDP-Tcp#843 Dom \User5
Server15 1 Active 192.168.178.20 LUMPI-PC RDP-Tcp#845 Dom \User6
Server15 9 Active 127.0.0.1 ABOIS RDP-Tcp#848 Dom\User7
Als Variabel sieht es so aus:
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Danke für die Hilfe.
bin kein großer Script Schreiber, aber hier habe ich eine Problem wo ich nicht weiter komme.
Ich möchte mir alle Aktiven Angemeldeten User aus dem TS Anzeigen lassen.
Das Funktioniert soweit auch als Command Befehl nur wenn ich das Ergebnis in eine Variabel Schreibe., kommt nur noch „Müll“ raus:
hier der Code: (Get-TSSession = ist Zusatz Module zu PowerShell STerminalServices )
$all=Get-Content Z:\Datensicherung\TS-User-Suche\Server.txt | ForEach-Object { Get-TSSession -State Active -ComputerName $_ | Where-Object { $_.UserName -like $suche } | ft -AutoSize }
So soll es aussehen:
Server SessionID State IPAddress ClientName WindowStationName UserName
--------- ----- --------- ---------- ----------------- --------
Server15 6 Active 192.168.1.112 PC1055 RDP-Tcp#832 Dom \User1
Server15 7 Active 192.168.178.28 ARBEITSPLATZ-1 RDP-Tcp#833 Dom \User2
Server15 3 Active 192.168.0.34 HUKPC04 RDP-Tcp#838 Dom \User3
Server15 10 Active 192.168.1.101 C011 RDP-Tcp#839 Dom \user4
Server15 2 Active 192.168.2.100 GUSTAVO RDP-Tcp#843 Dom \User5
Server15 1 Active 192.168.178.20 LUMPI-PC RDP-Tcp#845 Dom \User6
Server15 9 Active 127.0.0.1 ABOIS RDP-Tcp#848 Dom\User7
Als Variabel sieht es so aus:
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Danke für die Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 228281
Url: https://administrator.de/contentid/228281
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo clever38,
du wandelst die Objekte mit ft -Autosize innerhalb der Schleife bereits in einen Formatierten String um anstatt die Objekte => Objekte bleiben zu lassen.
Grüße Uwe
du wandelst die Objekte mit ft -Autosize innerhalb der Schleife bereits in einen Formatierten String um anstatt die Objekte => Objekte bleiben zu lassen.
$all = Get-Content "Z:\Datensicherung\TS-User-Suche\Server.txt" | ForEach-Object {Get-TSSession -State Active -ComputerName $_ | Where-Object { $_.UserName -like $suche }}
Ahhh, alles klar, das hättest du erwähnen müssen, dass du die Ausgabe in ein Steuerelement übergeben willst.
Dazu musst du das ganze in einen String wandeln:
Dazu musst du das ganze in einen String wandeln:
$all = Get-Content "Z:\Datensicherung\TS-User-Suche\Server.txt" | ForEach-Object {Get-TSSession -State Active -ComputerName $_ | Where-Object { $_.UserName -like $suche }} | ft -AutoSize | out-string
$Ausgabe.Text=$all
p.s. wenn du sowieso schon eine Form benutzt würde ich für die Darstellung der Daten ein Datagridview anstatt eines Labels hernehmen. Sieht meines Erachtens übersichtlicher aus
Beispiel wie man Objekte in ein DataGridView lädt (Zeile 10 -23):
Grüße Uwe
Beispiel wie man Objekte in ein DataGridView lädt (Zeile 10 -23):
function GenerateForm {
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
$form1 = New-Object System.Windows.Forms.Form
$dg1 = New-Object System.Windows.Forms.DataGridView
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
$handler_form1_Load=
{
# Liste der Dienste holen
$data = get-service
# ArrayList erstellen
$arrList = New-Object System.Collections.ArrayList
# der Array-Liste das Objekt hinzufügen
$arrList.AddRange($data)
# Die ArrayList der DataSource-Eigenschaft des DataGridView zuweisen
$dg1.DataSource = $arrList
}
$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
$form1.WindowState = $InitialFormWindowState
}
#----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 315
$System_Drawing_Size.Width = 412
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"
$form1.Text = "Primal Form"
$form1.add_Load($handler_form1_Load)
$dg1.Anchor = 15
$dg1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$dg1.Location = $System_Drawing_Point
$dg1.Name = "dg1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 291
$System_Drawing_Size.Width = 388
$dg1.Size = $System_Drawing_Size
$dg1.TabIndex = 0
$form1.Controls.Add($dg1)
$InitialFormWindowState = $form1.WindowState
$form1.add_Load($OnLoadForm_StateCorrection)
$form1.ShowDialog()| Out-Null
}
#Call the Function
GenerateForm