Powershell BalloonTip - Name anpassen
Mahlzeit die Damen und Herren,
ich wünsche zunächst einen guten Morgen, Mittag oder Abend.
Ich setze mich gerne mit PowerShell auseinander, gerade was so kleinere Skripte angeht.
Nun habe ich mir ein Skript geschrieben, welches einen BalloonTip erzeugt und das funktioniert absolut reibungslos.
Mein Problem ist nur, oben im BalloonTip steht ein mich störender Name. Ich frage mich jetzt, wie kann ich den anpassen?
Google hat mir da nicht so wirklich weiter geholfen, könnte aber auch sein, dass meine Frage evtl. nicht richtig dafür formuliert war.
Anbei ein Screenshot, damit ihr wisst, was ich meine.
Vielleicht ist das ja sogar nur ein Einzeiler, den ich einfach übersehen habe.
Ich danke für eure Hilfe!
ich wünsche zunächst einen guten Morgen, Mittag oder Abend.
Ich setze mich gerne mit PowerShell auseinander, gerade was so kleinere Skripte angeht.
Nun habe ich mir ein Skript geschrieben, welches einen BalloonTip erzeugt und das funktioniert absolut reibungslos.
Mein Problem ist nur, oben im BalloonTip steht ein mich störender Name. Ich frage mich jetzt, wie kann ich den anpassen?
Google hat mir da nicht so wirklich weiter geholfen, könnte aber auch sein, dass meine Frage evtl. nicht richtig dafür formuliert war.
Anbei ein Screenshot, damit ihr wisst, was ich meine.
Vielleicht ist das ja sogar nur ein Einzeiler, den ich einfach übersehen habe.
Ich danke für eure Hilfe!

Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1739206501
Url: https://administrator.de/forum/powershell-balloontip-name-anpassen-1739206501.html
Ausgedruckt am: 15.05.2025 um 06:05 Uhr
5 Kommentare
Neuester Kommentar
Ok stimmt, habs gerade mal getestet.
Der Titel den du ändern willst ist wohl der Titel des Porgramms, dass den Balloontip erzeugt (in meinem Fall daher immer "Windows PowerShell".
Die einzige Möglichkeit, wie ich es auf die schnelle hinbekommen habe, diesen Titel zu beeinflussen war das Skript mit PS2EXE zu konvertieren - hierbei kann dann ein Titel festgelegt werden.
Das Skript könnte in etwa so aussehen:
Damit könntest du dann wie folgt Nachrichten kreieren:
falls du dies jedoch auch auf anderen Computern nutzen willst, solltest du die EXE mit einem Codesigning-Zetifikat signieren, da das Programm sonst u.U. als nicht vertrauenswürdig eingestuft wird.
Gruß Thomas
Der Titel den du ändern willst ist wohl der Titel des Porgramms, dass den Balloontip erzeugt (in meinem Fall daher immer "Windows PowerShell".
Die einzige Möglichkeit, wie ich es auf die schnelle hinbekommen habe, diesen Titel zu beeinflussen war das Skript mit PS2EXE zu konvertieren - hierbei kann dann ein Titel festgelegt werden.
Zuerst muss dafür einmalig das PS2EXE-Modul in Powershell installiert werden:
# Entweder für alle Benutzer (benötigt Adminrechte)
Install-Module -Name ps2exe -Force
# Alternativ: Nur für den angemeldeten Benutzer (geht ohne Adminrechte)
Install-Module -Scope CurrentUser -Name ps2exe -Force
Skripte in EXE konvertieren geht damit so:
ps2exe -InputFile "C:\Pfad\zum\Skript.ps1" -OutputFile "C:\Pfad\zum\Programm.exe" -Title "Hier dann dein Titel" -NoConsole -NoOutput
Das Skript könnte in etwa so aussehen:
[CmdletBinding()]
Param(
[int]$Timeout,
[String]$Text,
[String]$Title,
[ValidateSet('None','Info','Warning','Error')]$Icon
)
Add-Type -A System.Windows.Forms
$Balloon = New-Object System.Windows.Forms.NotifyIcon -p @{
Icon = [System.Drawing.Icon]::New( [IO.MemoryStream](iwr -useb 'Administrator.de/favicon.ico').Content )
Visible = $true
}
$Balloon.ShowBalloonTip($Timeout, $Title, $Text, $Icon)
Damit könntest du dann wie folgt Nachrichten kreieren:
C:\Pfad\zu\deinem\Programm.exe -Timeout 1000 -Text "Hallo Leute" -Title "Nachricht" -Icon Info
# Oder natürlich auch in kurz durch Parameterauslassung:
C:\Pfad\zu\deinem\Programm.exe 1000 "Hallo Leute" "Nachricht" "Info"
falls du dies jedoch auch auf anderen Computern nutzen willst, solltest du die EXE mit einem Codesigning-Zetifikat signieren, da das Programm sonst u.U. als nicht vertrauenswürdig eingestuft wird.
Gruß Thomas
Servus @xLucipher,
BallonTips sind eigentlich eine Technik von Gestern und werden aus Kompatibilitätsgründen von den aktuellen Windows-Versionen in die neue Technik für solche Benachrichtigungen umgewandelt, namentlich sind das Toast-Messages (Da hat der MS Entwickler wohl gerade gefrühstückt
). Per Default nutzt Windows dazu die AppUserModelID die es aus der aufrufenden App extrahiert.
Toast-Messages lassen sich auch nativ mit der Powershell erzeugen und dabei lässt sich auch der App-Title für den Toast beliebig anpassen. In den Toasts lassen sich auch benutzerdefinierte Grafiken oder Buttons einblenden wenn man möchte, damit hat man viel mehr Gestaltungsmöglichkeiten ...


Grüße Uwe
BallonTips sind eigentlich eine Technik von Gestern und werden aus Kompatibilitätsgründen von den aktuellen Windows-Versionen in die neue Technik für solche Benachrichtigungen umgewandelt, namentlich sind das Toast-Messages (Da hat der MS Entwickler wohl gerade gefrühstückt
Toast-Messages lassen sich auch nativ mit der Powershell erzeugen und dabei lässt sich auch der App-Title für den Toast beliebig anpassen. In den Toasts lassen sich auch benutzerdefinierte Grafiken oder Buttons einblenden wenn man möchte, damit hat man viel mehr Gestaltungsmöglichkeiten ...
function Show-ToastNotification {
param(
[parameter(mandatory=$false)][ValidateSet('Title+Text','Image+Text')][string]$type = 'Title+Text',
[parameter(mandatory=$false)][string]$apptitle = "Powershell",
[parameter(mandatory=$false)][string]$message,
[parameter(mandatory=$false)][System.DateTimeOffset]$expiration = [DateTimeOffset]::Now.AddMinutes(60),
[parameter(mandatory=$false)][switch]$expiresOnReboot,
[parameter(mandatory=$false)][Windows.UI.Notifications.ToastNotificationPriority]$priority = 'Default',
[parameter(mandatory=$false)][switch]$suppressPopup,
[parameter(mandatory=$false)][switch]$includeCloseButton,
[parameter(mandatory=$false)][switch]$includeDismissButton
)
DynamicParam {
$attrCollection = new-object System.Collections.ObjectModel.Collection[System.Attribute]
$paramDic = new-object System.Management.Automation.RuntimeDefinedParameterDictionary
$attr = new-object System.Management.Automation.ParameterAttribute
switch($type){
'Title+Text'{
$attr.ParameterSetName = "A"
$attr.Mandatory = $false
$attrCollection.Add($attr)
$paramDic.Add("title", (new-object System.Management.Automation.RuntimeDefinedParameter("title", [String], $attrCollection)))
}
'Image+Text'{
$attr.ParameterSetName = "B"
$attr.Mandatory = $false
$attrCollection.Add($attr)
$paramDic.Add("image", (new-object System.Management.Automation.RuntimeDefinedParameter("image", [String], $attrCollection)))
}
}
return $paramDic
}
begin{}
process{}
end{
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | out-null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | out-null
$xml = $null
switch($type){
'Title+Text' {
$xml = [xml]([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)).GetXML()
# set toast content
$xml.SelectSingleNode('/toast/visual/binding/text[@id=1]').InnerText = $PSBoundParameters.title
$xml.SelectSingleNode('/toast/visual/binding/text[@id=2]').InnerText = $message
}
'Image+Text' {
$xml = [xml]([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastImageAndText01)).GetXML()
# set toast content
$xml.SelectSingleNode('/toast/visual/binding/text[@id=1]').InnerText = $message
$xml.SelectSingleNode('/toast/visual/binding/image[@id=1]').src = $PSBoundParameters.image
}
}
# add command buttons
if($includeCloseButton.IsPresent -or $includeDismissButton.IsPresent){
$commands = $xml.CreateElement('commands')
if ($includeCloseButton.IsPresent){
$command = $xml.CreateElement('command')
$command.SetAttribute('id','dismiss') >$null
$commands.AppendChild($command) >$null
}
if($includeDismissButton.IsPresent){
$command = $xml.CreateElement('command')
$command.SetAttribute('id','snooze') >$null
$commands.AppendChild($command) >$null
}
$xml.DocumentElement.AppendChild($commands) >$null
}
# convert xml object to DOM XML
$dom = New-Object Windows.Data.Xml.Dom.XmlDocument
$dom.LoadXml($xml.OuterXml)
# create toast
$toast = New-Object Windows.UI.Notifications.ToastNotification $dom -Property @{
Tag = [System.Web.Security.Membership]::GeneratePassword(15,0)
Group = "PowerShell"
ExpirationTime = $expiration
ExpiresOnReboot = $expiresOnReboot.IsPresent
Priority = $priority
SuppressPopup = $suppressPopup.IsPresent
}
# create notifier and show toast
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($apptitle).Show($toast)
}
}
Anwendungsbeispiele für die Funktion
Titel + Text
Show-ToastNotification `
-type Title+Text `
-Title "Das ist meine Überschrift" `
-apptitle "Das ist meine App" `
-message "Hallo das ist ein Test, oder was auch immer." `
-includeCloseButton `
-expiresOnReboot

Image + Text
Show-ToastNotification `
-type Image+Text `
-image 'C:\Windows\WinSxS\amd64_microsoft-windows-mediaplayer-core_31bf3856ad364e35_10.0.22000.282_none_069016efd47610d8\DMR_120.jpg' `
-apptitle "Das ist meine App" `
-message "Hallo das ist ein Test, oder was auch immer." `
-includeCloseButton `
-expiration ([DatetimeOffset]::Now.AddMinutes(1))

Grüße Uwe