Server IP : 85.214.239.14 / Your IP : 18.188.249.160 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/community/windows/plugins/modules/ |
Upload File : |
#!powershell # Copyright: (c) 2017, Jon Hawkesworth (@jhawkesworth) <jhawkesworth@protonmail.com> # Copyright: (c) 2017, Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) #Requires -Module Ansible.ModuleUtils.Legacy $ErrorActionPreference = "Stop" # version check $osversion = [Environment]::OSVersion $lowest_version = 10 if ($osversion.Version.Major -lt $lowest_version ) { $msg = "Sorry, this version of windows, $osversion, does not support Toast notifications. Toast notifications are available from version $lowest_version" Fail-Json -obj $result -message $msg } $stopwatch = [system.diagnostics.stopwatch]::startNew() $now = [DateTime]::Now $default_title = "Notification: " + $now.ToShortTimeString() $params = Parse-Args $args -supports_check_mode $true $check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -type "bool" -default $false $expire_seconds = Get-AnsibleParam -obj $params -name "expire" -type "int" -default 45 $group = Get-AnsibleParam -obj $params -name "group" -type "str" -default "Powershell" $msg = Get-AnsibleParam -obj $params -name "msg" -type "str" -default "Hello world!" $popup = Get-AnsibleParam -obj $params -name "popup" -type "bool" -default $true $tag = Get-AnsibleParam -obj $params -name "tag" -type "str" -default "Ansible" $title = Get-AnsibleParam -obj $params -name "title" -type "str" -default $default_title $timespan = New-TimeSpan -Seconds $expire_seconds $expire_at = $now + $timespan $expire_at_utc = $($expire_at.ToUniversalTime() | Out-String).Trim() $result = @{ changed = $false expire_at = $expire_at.ToString() expire_at_utc = $expire_at_utc toast_sent = $false } # If no logged in users, there is no notifications service, # and no-one to read the message, so exit but do not fail # if there are no logged in users to notify. if ((Get-Process -Name explorer -ErrorAction SilentlyContinue).Count -gt 0) { [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null $template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01) #Convert to .NET type for XML manipulation $toastXml = [xml] $template.GetXml() $toastXml.GetElementsByTagName("text").AppendChild($toastXml.CreateTextNode($title)) > $null # TODO add subtitle #Convert back to WinRT type $xml = New-Object Windows.Data.Xml.Dom.XmlDocument $xml.LoadXml($toastXml.OuterXml) $toast = [Windows.UI.Notifications.ToastNotification]::new($xml) $toast.Tag = $tag $toast.Group = $group $toast.ExpirationTime = $expire_at $toast.SuppressPopup = -not $popup try { $notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($msg) if (-not $check_mode) { $notifier.Show($toast) $result.toast_sent = $true Start-Sleep -Seconds $expire_seconds } } catch { $excep = $_ $result.exception = $excep.ScriptStackTrace Fail-Json -obj $result -message "Failed to create toast notifier: $($excep.Exception.Message)" } } else { $result.toast_sent = $false $result.no_toast_sent_reason = 'No logged in users to notify' } $endsend_at = Get-Date | Out-String $stopwatch.Stop() $result.time_taken = $stopwatch.Elapsed.TotalSeconds $result.sent_localtime = $endsend_at.Trim() Exit-Json -obj $result