Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PowerShell Ausgabe der Variabel Zuweisung stimmt nicht. Warum ?

Frage Entwicklung Batch & Shell

Mitglied: clever38

clever38 (Level 1) - Jetzt verbinden

31.01.2014, aktualisiert 14:04 Uhr, 2006 Aufrufe, 8 Kommentare

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.
Mitglied: colinardo
31.01.2014, aktualisiert um 14:27 Uhr
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.
01.
$all = Get-Content "Z:\Datensicherung\TS-User-Suche\Server.txt" | ForEach-Object {Get-TSSession -State Active -ComputerName $_ | Where-Object { $_.UserName -like $suche }}
Grüße Uwe
Bitte warten ..
Mitglied: clever38
31.01.2014 um 14:27 Uhr
Hallo Uwe,
Danke für die Hilfe, aber leider bekomme ich noch immer den gleichen „Müll“ wie vorher auch.

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.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData

Gruß
Clever38
Bitte warten ..
Mitglied: colinardo
31.01.2014, aktualisiert um 14:42 Uhr
kannst du mal bitte einen größeren Ausschnitt aus deinem Code posten..
Zur Info: ich hatte inzwischen das ft -Autosize am Ende meiner Codezeile noch entfernt.

Wie gibst du die Variable denn überhaupt aus, dafür reicht ein:
$all
Bitte warten ..
Mitglied: clever38
31.01.2014 um 14:41 Uhr
Hallo Uwe,
hier der ganze Code

#region ScriptForm Designer

#region Constructor

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

#endregion

#region Post-Constructor Custom Code

#endregion

#region Form Creation
#Warning: It is recommended that changes inside this region be handled using the ScriptForm Designer.
#When working with the ScriptForm designer this region and any changes within may be overwritten.
#~~< Form1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Form1 = New-Object System.Windows.Forms.Form
$Form1.ClientSize = New-Object System.Drawing.Size(1072, 681)
$Form1.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
$Form1.Text = "Form1"
#~~< Ausgabe >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Ausgabe = New-Object System.Windows.Forms.Label
$Ausgabe.Location = New-Object System.Drawing.Point(15, 69)
$Ausgabe.Size = New-Object System.Drawing.Size(1045, 564)
$Ausgabe.TabIndex = 4
$Ausgabe.Text = "Ausgabe"
#~~< Eingabe >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Eingabe = New-Object System.Windows.Forms.TextBox
$Eingabe.Font = New-Object System.Drawing.Font("Microsoft Sans Serif", 9.75, [System.Drawing.FontStyle]::Regular, [System.Drawing.GraphicsUnit]::Point, ([System.Byte](0)))
$Eingabe.Location = New-Object System.Drawing.Point(12, 35)
$Eingabe.Size = New-Object System.Drawing.Size(264, 22)
$Eingabe.TabIndex = 3
$Eingabe.Text = ""
#~~< Label1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Label1 = New-Object System.Windows.Forms.Label
$Label1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif", 12.0, [System.Drawing.FontStyle]::Bold, [System.Drawing.GraphicsUnit]::Point, ([System.Byte](0)))
$Label1.Location = New-Object System.Drawing.Point(12, 9)
$Label1.Size = New-Object System.Drawing.Size(243, 23)
$Label1.TabIndex = 2
$Label1.Text = "Welchen User Suchen Sie :"
#~~< Cancel >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Cancel = New-Object System.Windows.Forms.Button
$Cancel.Location = New-Object System.Drawing.Point(106, 646)
$Cancel.Size = New-Object System.Drawing.Size(75, 23)
$Cancel.TabIndex = 1
$Cancel.Text = "Cancel"
$Cancel.UseVisualStyleBackColor = $true
$Cancel.add_MouseClick({CancelMouseClick($Cancel)})
#~~< OK >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$OK = New-Object System.Windows.Forms.Button
$OK.Location = New-Object System.Drawing.Point(12, 646)
$OK.Size = New-Object System.Drawing.Size(75, 23)
$OK.TabIndex = 0
$OK.Text = "OK"
$OK.UseVisualStyleBackColor = $true
$OK.add_MouseClick({OKMouseClick($OK)})
$Form1.Controls.Add($Ausgabe)
$Form1.Controls.Add($Eingabe)
$Form1.Controls.Add($Label1)
$Form1.Controls.Add($Cancel)
$Form1.Controls.Add($OK)

#endregion

#region Custom Code

#endregion

#region Event Loop

function Main{
[System.Windows.Forms.Application]::EnableVisualStyles()
[System.Windows.Forms.Application]::Run($Form1)
}

#endregion

#endregion

#region Event Handlers

function CancelMouseClick( $object ){
$Form1.Close()
}

function OKMouseClick( $object ){
$top=$Eingabe.Text
#Read-Host "Eingabe" $top
$suche = "*" + $top + "*"
$all = Get-Content "Z:\Datensicherung\TS-User-Suche\Server.txt" | ForEach-Object {Get-TSSession -State Active -ComputerName $_ | Where-Object { $_.UserName -like $suche }} | ft -AutoSize
$Ausgabe.Text=$all

}

Main #This call must remain below all other event functions

#endregion
Bitte warten ..
Mitglied: colinardo
31.01.2014, aktualisiert um 14:50 Uhr
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:
01.
$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 
02.
$Ausgabe.Text=$all
Bitte warten ..
Mitglied: clever38
31.01.2014 um 15:01 Uhr
Hallo Uwe,
Super hat Funktioniert, Danke noch mal für die Hilfe

GELÖST !

G.
Clever 38
Bitte warten ..
Mitglied: colinardo
31.01.2014, aktualisiert um 15:46 Uhr
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):
01.
function GenerateForm { 
02.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
03.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
04.
 
05.
$form1 = New-Object System.Windows.Forms.Form 
06.
$dg1 = New-Object System.Windows.Forms.DataGridView 
07.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
08.
 
09.
 
10.
$handler_form1_Load=  
11.
12.
   # Liste der Dienste holen 
13.
   $data = get-service 
14.
 
15.
   # ArrayList erstellen 
16.
   $arrList = New-Object System.Collections.ArrayList 
17.
 
18.
   # der Array-Liste das Objekt hinzufügen 
19.
   $arrList.AddRange($data) 
20.
 
21.
   # Die ArrayList der DataSource-Eigenschaft des DataGridView zuweisen 
22.
   $dg1.DataSource = $arrList 
23.
24.
 
25.
 
26.
$OnLoadForm_StateCorrection= 
27.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
28.
	$form1.WindowState = $InitialFormWindowState 
29.
30.
 
31.
#---------------------------------------------- 
32.
#region Generated Form Code 
33.
$System_Drawing_Size = New-Object System.Drawing.Size 
34.
$System_Drawing_Size.Height = 315 
35.
$System_Drawing_Size.Width = 412 
36.
$form1.ClientSize = $System_Drawing_Size 
37.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
38.
$form1.Name = "form1" 
39.
$form1.Text = "Primal Form" 
40.
$form1.add_Load($handler_form1_Load) 
41.
 
42.
$dg1.Anchor = 15 
43.
$dg1.DataBindings.DefaultDataSourceUpdateMode = 0 
44.
$System_Drawing_Point = New-Object System.Drawing.Point 
45.
$System_Drawing_Point.X = 12 
46.
$System_Drawing_Point.Y = 12 
47.
$dg1.Location = $System_Drawing_Point 
48.
$dg1.Name = "dg1" 
49.
$System_Drawing_Size = New-Object System.Drawing.Size 
50.
$System_Drawing_Size.Height = 291 
51.
$System_Drawing_Size.Width = 388 
52.
$dg1.Size = $System_Drawing_Size 
53.
$dg1.TabIndex = 0 
54.
 
55.
$form1.Controls.Add($dg1) 
56.
$InitialFormWindowState = $form1.WindowState 
57.
$form1.add_Load($OnLoadForm_StateCorrection) 
58.
$form1.ShowDialog()| Out-Null 
59.
60.
#Call the Function 
61.
GenerateForm
Grüße Uwe
Bitte warten ..
Mitglied: clever38
03.02.2014 um 15:53 Uhr
Hallo Uwe,

Danke für den Tipp, habe auch schon daran gedacht es über eine DataGridView zu machen, sieht halt besser aus.

G.
Clever38
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Formatierung der Ausgabe (2)

Frage von Scroller zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell - Teile eines Pfads in eine Variabel schreiben (1)

Frage von ImmerKind zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...