Variablen in Python-GUI abfragen und Powershell übergeben möglich
Hallo,
ich würde gerne einen Powershell Script in einer Python-GUI "einbetten" und aus dem GUI-Variable-Werte übernehmen:
Ich habe als Ausbildungsaufgabe den folgenden Powershell-Script zusammengebastellt:
Ich würde gerne die Angaben und Variablen wie z. B.
Script: "C:\\Users\\USER\\Desktop\\testscript.ps1" --> Python
ABSENDERADRESSE" --> Powershell
"ZIELADRESSE" --> Powershell
"DEIN BETREFF" --> Powershell
"REPORT"--> Powershell
$SMTPHOST --> Powershell
$SMTPPORT --> Powershell
$SMTPUSER --> Powershell
$SMTPPass --> Powershell
in einem PYQT5 Dialog abfragen und als Variablewert dem Powershell-Script übergeben.
Am Ende sollte es als exe oder msi ausführbar sein. Der PW-Script wird aktuell auch als EXE ausgeführt und funktioniert soweit.
Ich würde den PS-Prozess sonst so "rufen" ...
Ist diese Übergabe von Eingaben von PYQT5 an Powershell möglich (oder sinnvoll)?
Vielen Dank für eure Meinungen.
Gr. I.
ich würde gerne einen Powershell Script in einer Python-GUI "einbetten" und aus dem GUI-Variable-Werte übernehmen:
Ich habe als Ausbildungsaufgabe den folgenden Powershell-Script zusammengebastellt:
##Formatierung der Dateiname##
$MyTime=Get-Date
#in sortierbaren String umwandeln Microsekundengenau
$TimeStamp=$MyTime.tostring("yyyymmddHHmmssffff")
##ich lese hier die Seriennummer aus##
$sn = (gwmi win32_bios).SerialNumber
##Name des angemeldeten User##
$username = $(Get-WMIObject -class Win32_ComputerSystem | select UserName).username
$profil = $env:USERPROFILE
##ich lege hier den Pfad der TXT-Datei fest##
$infodatei = $profil+"\Desktop\"+$TimeStamp+"_"+$sn+".txt"
$pcinfodatei = $profil+"\Desktop\"+$TimeStamp+"_"+$sn+".csv"
##ich lese hier die Rechnerinfos aus##
$winver = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" -Name ReleaseID).ReleaseId
$OsName = Get-ComputerInfo OsName
$OsVersion = Get-ComputerInfo OsVersion
$OsBuildNumber = Get-ComputerInfo OsBuildNumber
$OsHardwareAbstractionLayer = Get-ComputerInfo OsHardwareAbstractionLayer
$OfficeVer = reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"
Get-ComputerInfo | select-object OSname,
OsVersion,
WindowsInstallDateFromRegistry,
WindowsProductId,
BiosBIOSVersion,
BiosFirmwareType,
BiosManufacturer,
BiosReleaseDate,
BiosSeralNumber,
CsCaption,
CsManufacturer,
CsModel,
CsNumberOfLogicalProcessors,
CsSystemFamily | Export-Csv -ErrorAction Stop -path $pcinfodatei -noTypeInformation -Delimiter ";" -Force
##ich lese hier den Bitlocker Recovery-Key aus##
$BitlockerVolumers = Get-BitLockerVolume
$BitlockerVolumers |
ForEach-Object {
$MountPoint = $_.MountPoint
$RecoveryKey = [string]($_.KeyProtector).RecoveryPassword
if ($RecoveryKey.Length -gt 5)
{
Write-Output ("Seriennummer: $sn") | Out-File $infodatei
Add-Content $infodatei "Recovery-Key:$recoverykey"
Add-Content $infodatei "User:$username"
Add-Content $infodatei "Benutzerprofil:$profil"
Add-Content $infodatei "Windows-Version:$winver"
Add-Content $infodatei "$OsName"
Add-Content $infodatei "$OsVersion"
Add-Content $infodatei "$OsBuildNumber"
Add-Content $infodatei "$OsHardwareAbstractionLayer"
Add-Content $infodatei "$OfficeVer"
## ich möchte hier die TXT per Mail versenden ##
Function sendmail($FROM,$TO,$SUBJECT,$BODY,[System.IO.FileInfo[]]$ATTACHMENTS = $null){
$SMTPHOST = "XXXXXXXXX.kasserver.com"
$SMTPPORT = 587
$SMTPUSER = "report@XXXXXX.de"
$SMTPPass = "XXXXXXXXXXXXXXXX"
$SMTPClient = New-object System.Net.Mail.SmtpClient($SMTPHOST,$SMTPPORT)
$SMTPClient.EnableSsl = $true
$Mail = new-object System.Net.Mail.MailMessage
$Mail.from = $FROM
$Mail.to.add($TO)
$SMTPClient.Credentials = new-object System.Net.NetworkCredential($SMTPUSER,$SMTPPass)
$Mail.Subject = $SUBJECT
$Mail.Body = $BODY
# Add Attachments
if ($ATTACHMENTS){
foreach ($att in $ATTACHMENTS){
$Mail.Attachments.Add($att.FullName)
}
}
$SMTPClient.Send($Mail)
$smtpclient.Dispose()
$mail.Dispose()
}
sendmail "ABSENDERADRESSE" "ZIELADRESSE" "DEIN BETREFF" "REPORT" (gci $infodatei)}
}
Ich würde gerne die Angaben und Variablen wie z. B.
Script: "C:\\Users\\USER\\Desktop\\testscript.ps1" --> Python
- $infodatei = $profil+"\Desktop\"+$TimeStamp+"_"+$sn+".txt" --> Powershell
ABSENDERADRESSE" --> Powershell
"ZIELADRESSE" --> Powershell
"DEIN BETREFF" --> Powershell
"REPORT"--> Powershell
$SMTPHOST --> Powershell
$SMTPPORT --> Powershell
$SMTPUSER --> Powershell
$SMTPPass --> Powershell
in einem PYQT5 Dialog abfragen und als Variablewert dem Powershell-Script übergeben.
Am Ende sollte es als exe oder msi ausführbar sein. Der PW-Script wird aktuell auch als EXE ausgeführt und funktioniert soweit.
Ich würde den PS-Prozess sonst so "rufen" ...
# -*- coding: iso-8859-1 -*-
import subprocess, sys
p = subprocess.Popen(["powershell.exe",
"C:\\Users\\USER\\Desktop\\testscript.ps1"],
stdout=sys.stdout)
p.communicate()
Ist diese Übergabe von Eingaben von PYQT5 an Powershell möglich (oder sinnvoll)?
Vielen Dank für eure Meinungen.
Gr. I.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1464482504
Url: https://administrator.de/forum/variablen-in-python-gui-abfragen-und-powershell-uebergeben-moeglich-1464482504.html
Ausgedruckt am: 13.03.2025 um 16:03 Uhr
5 Kommentare
Neuester Kommentar

Ist diese Übergabe von Eingaben von PYQT5 an Powershell möglich (oder sinnvoll)?
Dafür hat die Powershell die Eingabe-Parameterhttps://it-learner.de/wie-kann-man-einem-windows-powershell-skript-param ...
https://blog.stefanrehwald.de/2013/09/09/powershell-10-einem-script-para ...
https://www.script-example.com/powershell-skript

Schon witzig wie hier einige hier die Platform im Dauerabo zum selbst nachdenken missbrauchen 🙃😆
Wäre vielleicht mal sinniger weniger planlos durch die Welt zu schaukeln, und statt Trial & Error als erstes immer die Doku aufzuschlagen und vor dem Thread-Schreiben erst in sich zu gehen und zu Lesen ...
Powershell - Leitfaden für Anfänger
Btw. der SMTP Client ist schon länger deprecated und wird nicht mehr weiterentwickelt, sollte man besser gleich durch Mailkit ersetzen, denn STARTTLS ist das einzige was der supported und das glänzt ja mittlerweile durch x Sicherheitsprobleme, also nur eine Frage der Zeit bis einem das auf die Füße fällt.
Wäre vielleicht mal sinniger weniger planlos durch die Welt zu schaukeln, und statt Trial & Error als erstes immer die Doku aufzuschlagen und vor dem Thread-Schreiben erst in sich zu gehen und zu Lesen ...
Powershell - Leitfaden für Anfänger
Btw. der SMTP Client ist schon länger deprecated und wird nicht mehr weiterentwickelt, sollte man besser gleich durch Mailkit ersetzen, denn STARTTLS ist das einzige was der supported und das glänzt ja mittlerweile durch x Sicherheitsprobleme, also nur eine Frage der Zeit bis einem das auf die Füße fällt.