Powershell - Ausgabe des Codes als Text
Hallo zusammen.
Ich arbeite mit der Software Powershell Studio. Mit dieser scripte ich viel, am Ende kommt eine .exe-Datei heraus.
Das funktioniert auch soweit immer problemlos.
Nun wurde aber die Frage gestellt, ob man nicht per Knopfdruck eine Eigenschaft einschalten kann, dass die Vorgehensweise innerhalb der .exe Datei auch sichtbar gemacht werden kann?
Im Klartext möchte man also nach Wunsch auch die Ausgabe des Codes haben, der zum Beispiel abläuft, wenn man einen Button drückt.
Als Beispiel nehmen wir mal einen Button, der die Aufgabe hat, alle Services auf einem Remotecomputer zu sammeln, diese in einer .xls Datei zu exportieren, anschließend diese Datei auf den lokalen Computer kopiert.
Das läuft innerhalb der .exe Datei als "BlackBox" ab. Es erfüllt seinen Zweck, aber wenn jemand sehen will welcher Code dahinterhängt, hat er Pech.
Gibt es eine Möglichkeit zu sagen:
"während du den Code ausführst, schreibe gleichzeitig deinen Code in eine Textdatei..."?
Praktisch ein Logging mit allem was er macht und tut...
Ich arbeite mit der Software Powershell Studio. Mit dieser scripte ich viel, am Ende kommt eine .exe-Datei heraus.
Das funktioniert auch soweit immer problemlos.
Nun wurde aber die Frage gestellt, ob man nicht per Knopfdruck eine Eigenschaft einschalten kann, dass die Vorgehensweise innerhalb der .exe Datei auch sichtbar gemacht werden kann?
Im Klartext möchte man also nach Wunsch auch die Ausgabe des Codes haben, der zum Beispiel abläuft, wenn man einen Button drückt.
Als Beispiel nehmen wir mal einen Button, der die Aufgabe hat, alle Services auf einem Remotecomputer zu sammeln, diese in einer .xls Datei zu exportieren, anschließend diese Datei auf den lokalen Computer kopiert.
Das läuft innerhalb der .exe Datei als "BlackBox" ab. Es erfüllt seinen Zweck, aber wenn jemand sehen will welcher Code dahinterhängt, hat er Pech.
Gibt es eine Möglichkeit zu sagen:
"während du den Code ausführst, schreibe gleichzeitig deinen Code in eine Textdatei..."?
Praktisch ein Logging mit allem was er macht und tut...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 340804
Url: https://administrator.de/contentid/340804
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Zitat von @internet2107:
Ich brauche so etwas wie Start-Transscript .... Stop-Transscript.
Problem bei Transscript ist aber, dass ich dafür
a) Framework 5.0 auf jedem Rechner installiert haben muss
Das ist natürlich Blödsinn. Die CMDlets gibt's seit PS 3.0.Ich brauche so etwas wie Start-Transscript .... Stop-Transscript.
Problem bei Transscript ist aber, dass ich dafür
a) Framework 5.0 auf jedem Rechner installiert haben muss
b) Transscript praktisch nur die Fehler loggt.
https://serverfault.com/questions/102098/powershell-script-showing-comma ...Gruß
Dann gebe ihn aus, fertig. Du hast ihn, also kannst du ihn auch z.B. in ein Array/Hashtable schreiben und bei Bedarf ausgeben.
So eine Funktion die du suchst gibt es nicht.
BTW. Powershell als Exe verpackt?? Da nimmt man doch besser gleich c# und ist unabhängig von der Shell...
So eine Funktion die du suchst gibt es nicht.
BTW. Powershell als Exe verpackt?? Da nimmt man doch besser gleich c# und ist unabhängig von der Shell...
Ein Beispiel wäre folgendes:
Das zeigt für jeden Button der Form den jeweiligen Inhalt des Click-Eventhandlers als Tooltip an wenn man die Maus über den Button hovert. Steuern lässt sich die Anzeige über die Bool-Variable $showCodeInTooltip.
Gruß
Das zeigt für jeden Button der Form den jeweiligen Inhalt des Click-Eventhandlers als Tooltip an wenn man die Maus über den Button hovert. Steuern lässt sich die Anzeige über die Bool-Variable $showCodeInTooltip.
function GenerateForm {
#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion
#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$btn3 = New-Object System.Windows.Forms.Button
$btn2 = New-Object System.Windows.Forms.Button
$btn1 = New-Object System.Windows.Forms.Button
$toolTip1 = New-Object System.Windows.Forms.ToolTip
$tooltip1.IsBalloon = $true
$tooltip1.ShowAlways = $true
$tooltip1.ToolTipTitle = "Source-Code behind Control"
$showCodeInToolTip = $true
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects
$handler_btn1_Click= {
[System.Windows.Forms.MessageBox]::Show("Playing guitar")
}
$handler_btn2_Click= {
[System.Windows.Forms.MessageBox]::Show("Playing piano")
}
$handler_btn3_Click= {
[System.Windows.Forms.MessageBox]::Show("Playing drums")
}
$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 = 48
$System_Drawing_Size.Width = 254
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"
$form1.Text = "Show Code Demo"
$btn3.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 174
$System_Drawing_Point.Y = 12
$btn3.Location = $System_Drawing_Point
$btn3.Name = "btn3"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 75
$btn3.Size = $System_Drawing_Size
$btn3.TabIndex = 2
$btn3.Text = "Play drums"
$btn3.UseVisualStyleBackColor = $True
$btn3.add_Click($handler_btn3_Click)
$form1.Controls.Add($btn3)
$btn2.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 93
$System_Drawing_Point.Y = 12
$btn2.Location = $System_Drawing_Point
$btn2.Name = "btn2"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 75
$btn2.Size = $System_Drawing_Size
$btn2.TabIndex = 1
$btn2.Text = "Play piano"
$btn2.UseVisualStyleBackColor = $True
$btn2.add_Click($handler_btn2_Click)
$form1.Controls.Add($btn2)
$btn1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$btn1.Location = $System_Drawing_Point
$btn1.Name = "btn1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 75
$btn1.Size = $System_Drawing_Size
$btn1.TabIndex = 0
$btn1.Text = "Play guitar"
$btn1.UseVisualStyleBackColor = $True
$btn1.add_Click($handler_btn1_Click)
$form1.Controls.Add($btn1)
if ($showCodeInToolTip){
$form1.Controls | ?{$_.GetType().Name -eq "Button"} | %{
$tooltip1.SetToolTip($_,(iex -Command "`$handler_$($_.Name)_Click"))
}
}
#endregion Generated Form Code
#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null
} #End Function
#Call the Function
GenerateForm
Ebenso ein gut's WE.