PS1 Skript in EXE
Hallo Leute,
wie der Tietel schon sagt, möchte ich ein PowerShell-Skript (.ps1) in eine funktionsfähige .exe kompilieren.
Bitte keine Online Konverter. Kann mir jemand sagen, wie ich das möglichst ohne konvertierungsprogramme anstelle (Virusgefahr, Datenklau...)
Für die die es Interessiert hier das Skript:
(ja die auskommentierten befehle müssen so sein, wegen unserem Azubi)
Gruß Timo
wie der Tietel schon sagt, möchte ich ein PowerShell-Skript (.ps1) in eine funktionsfähige .exe kompilieren.
Bitte keine Online Konverter. Kann mir jemand sagen, wie ich das möglichst ohne konvertierungsprogramme anstelle (Virusgefahr, Datenklau...)
Für die die es Interessiert hier das Skript:
(ja die auskommentierten befehle müssen so sein, wegen unserem Azubi)
$pfad = Read-Host "Bitte den Speicherpfad eingeben" #Fragt den Speicherort vom Benutzer ab
$dateiname = Read-Host "Bitte den Dateinamen eingeben" #Fragt den Dateinamen ab
$datumzeit = get-date -Format "dd.MM.yyyy, HH:mm:ss" #Gibt Datum/Uhrzeit aus
$pcname = $(Get-WmiObject Win32_Computersystem).name #Gibt den PC-Namen aus
$OSversion = [System.Environment]::OSVersion.Version #Gibt die OS-Version aus
$benutzer = $Env:USERNAME #Gibt den aktuell angemeldeten Benutzernamen aus
$domäne = $env:USERDNSDOMAIN #Gibt die aktuelle Domäne aus
$Laufwerk = Get-WmiObject -class win32_logicalDisk
ForEach ($Element in $Laufwerk){
if ($Element.DriveType -eq 3){
$Laufwerk2 = $Element.FreeSpace/1GB
$Laufwerk01 = $Element.Size/1GB
$Laufwerk4 = $Laufwerk01|Out-String
$Laufwerk3 = $Laufwerk2|Out-String
$frei = Write-Output ($Laufwerk3.SubString(0,5))
$gesamt = Write-Output ($Laufwerk4.SubString(0,5))
}
}
#Gibt den freien und den gesamten Festplattenspeicher an
$internetverbindung = if (Test-Connection 213.183.81.10 -BufferSize 16 -Count 1 -Quiet) { Write-output aktiv} else {Write-Output inaktiv} #Gibt an, ob eine Internetverbindung besteht
#$internetverbindung = (Resolve-DnsName www.cc-net.ag).ip4address
#$domäne = [Environment]::UserDomainName
#$benutzer = [Environment]::UserName
#$speicher = Get-WMIObject Win32_LogicalDisk -filter "name='c:'" | select name, freespace
#$speicher = gwmi Win32_LogicalDisk -Computer $pcname | ForEach {$_.name, [math]::truncate($_.freespace / 1GB)}
#$internetverbindung = Test-NetConnection 213.183.81.10 | select Pingsucceeded
#New-item c:\PC-Info\$date.txt -force -value "$Titel `r`n`r`nComputername: $pcname`r`n`r`nWindowsversion: $OSversion`r`n`r`nangemeldeter Benutzer: $benutzer`r`n`r`nDomäne: $domäne`r`n`r`nInternetverbindung: $internetverbindung`r`n`r`n$speicher"
New-item $pfad/$dateiname.txt -force -value "
_______________________________________________________________
|
Datum, Uhrzeit | $datumzeit
_________________________|_____________________________________
|
Computername: | $pcname
_________________________|_____________________________________
|
Windowsversion: | $OSversion
_________________________|_____________________________________
|
angemeldeter Benutzer: | $benutzer
_________________________|_____________________________________
|
Domäne: | $domäne
_________________________|_____________________________________
|
Internetverbindung: | $internetverbindung
_________________________|_____________________________________
|
Speicher in C:/ | $gesamt GB gesamt, $frei GB frei
_________________________|_____________________________________
"
$mail = Read-Host "Soll die Datei per E-Mail versendet werden? (ja/nein)"
switch ($mail){
ja {
$absender = Read-Host "Bitte den Absender eingeben"
$empfänger = Read-Host "Bitte den Empfänger eingeben"
$server = Read-Host "Bitte den SMTP-Server eingeben"
$betreff = Read-Host "Bitte den Betreff eingeben"
$text = Read-Host "Bitte einen E-Mailtext eingeben"
}
nein {exit}
}
#Fragt die nötigen infos zur Mail vom Benutzer ab
Send-MailMessage -From "$absender" -to "$empfänger" -Subject "$betreff" -Body "$text" -SmtpServer "$server" -Credential "$absender" -UseSSL -Port 587 -Attachments "$pfad/$dateiname.txt"
Gruß Timo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 307703
Url: https://administrator.de/contentid/307703
Ausgedruckt am: 17.11.2024 um 07:11 Uhr
4 Kommentare
Neuester Kommentar
Hi Timo,
Powershell wird nicht kompiliert. Um das Skript in eine exe umzuwandeln musst du entweder eine eigene Anwendung schreiben die den Skript-Code enthält und diese dann per Powershell ausführt oder eine Programm genau diese Funktion schon bietet. Ersteres ist mit Visual Studio kein Problem, aber ich würde aus Bequemlichkeit zweitens bevorzugen: PS2Exe
Gruß,
André
Powershell wird nicht kompiliert. Um das Skript in eine exe umzuwandeln musst du entweder eine eigene Anwendung schreiben die den Skript-Code enthält und diese dann per Powershell ausführt oder eine Programm genau diese Funktion schon bietet. Ersteres ist mit Visual Studio kein Problem, aber ich würde aus Bequemlichkeit zweitens bevorzugen: PS2Exe
Gruß,
André
Hallo @112Timo,
installiere dir den PowerGUI Script Editor der hat die Funktionalität bereits implementiert, um dein geschriebenes Script zu einer .exe Datei zu kompilieren.
Gruß, Sascha
installiere dir den PowerGUI Script Editor der hat die Funktionalität bereits implementiert, um dein geschriebenes Script zu einer .exe Datei zu kompilieren.
Gruß, Sascha
Hi.
Running Powershell-Skripts or Batch in EXE-Wrappers is always very bad practice. First most Anti-Virus engines will fire up if they see such a wrapper, second hiding sensitive information is not protected in such programs. And much more flaws ...
Conclusion: Write a normal program in c# or vb.net etc.
Regards
Running Powershell-Skripts or Batch in EXE-Wrappers is always very bad practice. First most Anti-Virus engines will fire up if they see such a wrapper, second hiding sensitive information is not protected in such programs. And much more flaws ...
Conclusion: Write a normal program in c# or vb.net etc.
Regards