Powershellscript soll msgbox bei ausführung öffnen
Hallo zusammen,
ich habe ein skript das eine msgbox öffnen soll, die funktioniert allerding nur wenn ich das Skript in Powershell ISE geöffnet habe und ausführe.
Wenn ich das skript direkt oder per Aufruf öffne, funktioniert es zwar, aber es wird keine msgbox geöffnet.
Bitte um Hilfe damit die msgbox angezeigt wird auch wenn das Skript nicht in Powershell ISE geöffnet wird.
function Get-RandomCharacters($length, $characters) {
$random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
$private:ofs=""
return [String]$characters[$random]
}
function Scramble-String([string]$inputString){
$characterArray = $inputString.ToCharArray()
$scrambledStringArray = $characterArray | Get-Random -Count $characterArray.Length
$outputString = -join $scrambledStringArray
return $outputString
}
$password = Get-RandomCharacters -length 5 -characters 'abcdefghiklmnoprstuvwxyz'
$password += Get-RandomCharacters -length 2 -characters 'ABCDEFGHKLMNPRSTUVWXYZ'
$password += Get-RandomCharacters -length 2 -characters '123456789'
$password += Get-RandomCharacters -length 1 -characters '!"§$%&/()=?}][{@#*+'
$password = Scramble-String $password
$msg = "Passwort: $password"
[System.Windows.Forms.MessageBox]::Show($msg, "Ihr temporäres Passwwort",[System.Windows.Forms.MessageBoxButtons]::OK)
ich habe ein skript das eine msgbox öffnen soll, die funktioniert allerding nur wenn ich das Skript in Powershell ISE geöffnet habe und ausführe.
Wenn ich das skript direkt oder per Aufruf öffne, funktioniert es zwar, aber es wird keine msgbox geöffnet.
Bitte um Hilfe damit die msgbox angezeigt wird auch wenn das Skript nicht in Powershell ISE geöffnet wird.
function Get-RandomCharacters($length, $characters) {
$random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length }
$private:ofs=""
return [String]$characters[$random]
}
function Scramble-String([string]$inputString){
$characterArray = $inputString.ToCharArray()
$scrambledStringArray = $characterArray | Get-Random -Count $characterArray.Length
$outputString = -join $scrambledStringArray
return $outputString
}
$password = Get-RandomCharacters -length 5 -characters 'abcdefghiklmnoprstuvwxyz'
$password += Get-RandomCharacters -length 2 -characters 'ABCDEFGHKLMNPRSTUVWXYZ'
$password += Get-RandomCharacters -length 2 -characters '123456789'
$password += Get-RandomCharacters -length 1 -characters '!"§$%&/()=?}][{@#*+'
$password = Scramble-String $password
$msg = "Passwort: $password"
[System.Windows.Forms.MessageBox]::Show($msg, "Ihr temporäres Passwwort",[System.Windows.Forms.MessageBoxButtons]::OK)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 627150
Url: https://administrator.de/contentid/627150
Ausgedruckt am: 17.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
ich habe ein skript das eine msgbox öffnen soll, die funktioniert allerding nur wenn ich das Skript in Powershell ISE geöffnet habe und ausführe.
Du hast vergessen das Assembly "System.Windows.Forms" zu laden Das wird in der ISE per Default geladen, aber in normalen Skripten nicht.
Deswegen lade das Assembly bevor du dort Messageboxen nutzen willst.
#.....
Add-Type -A System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show($msg, "Ihr temporäres Passwort",[System.Windows.Forms.MessageBoxButtons]::OK)
Zitat von @Doskias:
Kurz zwischenfrage an Primal:
Ich mach es immer mit
am Anfang des Skriptes. Ist das das gleiche wie und wenn nein, wo ist der technische Unterschied?
Beide machen das gleiche (rufen intern die selbe .NET Funktion auf), aber das erstere funktioniert auch in der alten PS 2.0, das Add-Type CMDLet gibt es erst ab PS Version 3.0.Kurz zwischenfrage an Primal:
Ich mach es immer mit
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
Add-Type -A System.Windows.Forms
Logo ...
Add-Type –memberDefinition '[DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);' -name thefuck -namespace what
[what.thefuck]::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
Moin,
eine Alternative zu Deiner Funktion. Hat den Vorteil, dass Du die nicht viermal aufrufen musst und dass die Anzahl der Großbuchstaben, Ziffern und Sonderzeichen nicht festgelegt ist.
Liebe Grüße
Erik
eine Alternative zu Deiner Funktion. Hat den Vorteil, dass Du die nicht viermal aufrufen musst und dass die Anzahl der Großbuchstaben, Ziffern und Sonderzeichen nicht festgelegt ist.
function get-randompass {
PARAM (
$anzahl = 16
)
function get-randomstring {
PARAM (
$zeichen = 16
)
#$obj_randompass = new-object System.Random
$arr_char = @("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","!","`"","§","$","%","&","/","(",")","=","?","+","*","#","-",",","<",">")
$str_random = ""
$i=1
while($i-le $zeichen) {
$str_random = $str_random + $(get-random -inputobject $arr_char)
$i++
}
return $str_random
}
$result = get-randomstring $anzahl
return $result
}
Liebe Grüße
Erik