Файл SendMsg.ps1
Раздобыт в инете (автор отзовись)
# Version 2.6
# Данный скрипт отправляет сообщения всем
# (или выбранным пользователям удаленного рабочего стола)
# Подавляем вывод
$ErrorActionPreference = "silentlycontinue"
# Подключаем то, с помощью чего будем рисовать нашу форму
Add-Type -assembly System.Windows.Forms
# Все просто, массивы из списка серверов, списка пользователей,
# и варианты подписи - чтобы использовать могла не только поддержка.
$Server = @("rdp1, rdp2, rdp3, rdp4")
$User = @("*")
$Message = "Сообщение для отправки по умолчанию. Поменяй меня!"
# По хорошему, надо бы сделать так, чтобы если умолчательное сообщение
# не менялось и шло нажатие на кнопку отправить, то выводилось бы предупреждение.
# Дописываем подписи по вкусу/желанию
$Sign = @("С уважением, администраторы 1С", "С уважением, системные администраторы")
# Повелось, что все функции описываются до их использования.
# Функция отправки сообщения. Принимаем параметры, проверяем, если чекбокс включен,
# устанавливаем параметры отправки только на консоль локалхоста, иначе проходим по списку
# серверов, внутри каждого сервера инициируем цикл по списку пользователей с предварительно
# отрезанными пробелами до и после текста (помните формат: "сервер1, сервер2, сервер3"
# для читаемости текста), вызываем сам msg для отправки сообщения и после чего вызываем
# диалогов окно с подтверждением отправки и закрытием программы.
Function SendMessage {
param ($Server, $User, $Message, $Sign)
If ($TestRunCheckBox.Checked -eq 1 ) {
Write-Host $TestRunCheckBox.Checked;
$Server="localhost"; $User = "srv01administrator"
}
ForEach ($Item in $Server) {
ForEach ($UserN in $User) {
$UserTrim = $UserN.Trim()
$ServerTrim = $Item.Trim()
$MsgTrim = $Message.Trim()
$SignTrim = $SignX.Trim()
c:windowssystem32msg.exe $UserTrim /Server:$ServerTrim $MsgTrim $SignTrim
}
}
}
Function Confirm {
$ConfirmWin = New-Object System.Windows.Forms.Form
$ConfirmWin.StartPosition = "CenterScreen"
$ConfirmWin.Text = "Подтверждение отправки"
$ConfirmWin.Width = 200
$ConfirmWin.Height = 120
$ConfirmWin.ControlBox = 0
$ConfirmWinOKButton = New-Object System.Windows.Forms.Button
$ConfirmWinOKButton.add_click({ $MainSendWindow.Close(); $ConfirmWin.Close() })
$ConfirmWinOKButton.Text = "Закрыть"
$ConfirmWinOKButton.AutoSize = 1
$ConfirmWinOKButton.Location = New-Object System.Drawing.Point(50,50)
$ConfirmLabel = New-Object System.Windows.Forms.Label
$ConfirmLabel.Text = "Сообщение было отправлено"
$ConfirmLabel.AutoSize = 1
$ConfirmLabel.Location = New-Object System.Drawing.Point(10,10)
$ConfirmWin.Controls.Add($ConfirmLabel)
$ConfirmWin.Controls.Add($ConfirmWinOKButton)
$ConfirmWin.ShowDialog() | Out-Null
}
$MainSendWindow = New-Object System.Windows.Forms.Form
$ToolTip = New-Object System.Windows.Forms.ToolTip
$ToolTip.BackColor = [System.Drawing.Color]::LightGoldenrodYellow
$ToolTip.IsBalloon = $true
# $ToolTip.InitialDelay = 500
# $ToolTip.ReshowDelay = 500
$SendButton = New-Object System.Windows.Forms.Button
$CloseButton = New-Object System.Windows.Forms.Button
$TestRunCheckBox = New-Object System.Windows.Forms.CheckBox
$ServerTextBox = New-Object System.Windows.Forms.ComboBox
$UserTextBox = New-Object System.Windows.Forms.ComboBox
$MessageTextBox = New-Object System.Windows.Forms.TextBox
$SignTextBox = New-Object System.Windows.Forms.ComboBox
$ServerTextBoxLabel = New-Object System.Windows.Forms.Label
$UserTextBoxLabel = New-Object System.Windows.Forms.Label
$MessageTextBoxLabel = New-Object System.Windows.Forms.Label
$SignTextBoxLabel = New-Object System.Windows.Forms.Label
$MainSendWindow.StartPosition = "CenterScreen"
$MainSendWindow.Text = "Отправка сообщения пользователям"
$MainSendWindow.Width = 470
$MainSendWindow.Height = 220
$ServerTextBoxLabel.Location = New-Object System.Drawing.Point(10,12)
$ServerTextBoxLabel.Text = "Список серверов"
$UserTextBoxLabel.Location = New-Object System.Drawing.Point(10,42)
$UserTextBoxLabel.Text = "Список пользователей"
$UserTextBoxLabel.Autosize = 1
$MessageTextBoxLabel.Location = New-Object System.Drawing.Point(10,73)
$MessageTextBoxLabel.Text = "Сообщение для отправки"
$MessageTextBoxLabel.Autosize = 1
$ToolTip.SetToolTip($MessageTextBoxLabel, "Текст сообщения - что, собственно, будем отправлять")
$SignTextBoxLabel.Location = New-Object System.Drawing.Point(10,103)
$SignTextBoxLabel.Text = "Подпись"
$SignTextBoxLabel.Autosize = 1
$ToolTip.SetToolTip($SignTextBoxLabel, "Надо подписаться, а то в заголовке окна с сообщениями не видно автора")
$ServerTextBox.Location = New-Object System.Drawing.Point(140,10)
$ServerTextBox.DataSource = $Server
$ServerTextBox.Width = 300
$ServerTextBox.add_TextChanged({ $Server = $ServerTextBox.Text })
$ServerTextBox.TabIndex = 1
$ToolTip.SetToolTip($ServerTextBox, "Укажите список серверов")
$UserTextBox.Location = New-Object System.Drawing.Point(140,40)
$UserTextBox.DataSource = $User
$UserTextBox.Text = $User[1]
$UserTextBox.add_click({ $UserTextBox.SelectAll() })
$UserTextBox.add_TextChanged({ $UserX = $UserTextBox.Text })
$UserTextBox.Width = 300
$UserTextBox.TabIndex = 2
$ToolTip.SetToolTip($UserTextBox, "Кому отправлять будем? (* для *всех* пользователей, по умолчанию)")
$MessageTextBox.Location = New-Object System.Drawing.Point(140,70)
$MessageTextBox.Text = $Message
$MessageTextBox.add_click({ $MessageTextBox.SelectAll() })
$MessageTextBox.add_TextChanged( { $Message = $MessageTextBox.Text })
$MessageTextBox.Width = 300
$MessageTextBox.TabIndex = 3
$ToolTip.SetToolTip($MessageTextBox, "Что будем отправлять пользователям?")
$SignTextBox.Location = New-Object System.Drawing.Point(140,103)
$SignTextBox.DataSource = $Sign
$SignTextBox.Text = $Sign[1]
$SignTextBox.add_TextChanged({ $Sign = $SignTextBox.Text })
$SignTextBox.Width = 300
$SignTextBox.TabIndex = 4
$ToolTip.SetToolTip($SignTextBox, "Кто автор рассылки?")
$SendButton.Location = New-Object System.Drawing.Point(10,150)
$SendButton.Text = "Отправить сообщение"
$SendButton.add_click({
$User = $UserTextBox.Text.Split(",");
$Server = $ServerTextBox.Text.Split(",");
$SignX = $SignTextBox.Text;
SendMessage $Server $User $Message $SignX} )
$SendButton.Autosize = 1
$SendButton.TabIndex = 5
$ToolTip.SetToolTip($SendButton, "Нажмите для отправки сообщения")
$TestRunCheckBox.Location = New-Object System.Drawing.Point(200,150)
$TestRunCheckBox.Text = "Тест"
$TestRunCheckBox.Checked = 1
$TestRunCheckBox.AutoSize = 1
$TestRunCheckBox.TabIndex = 6
$ToolTip.SetToolTip($TestRunCheckBox, "Тестовая отправка, только себе, иначе - для всех")
$CloseButton.Location = New-Object System.Drawing.Point(315,150)
$CloseButton.Text = "Выйти из программы"
$CloseButton.add_click({ $MainSendWindow.Close() })
$CloseButton.Autosize = 1
$CloseButton.TabIndex = 7
$ToolTip.SetToolTip($CloseButton, "Завершить скрипт")
$MainSendWindow.Controls.Add($SendButton)
$MainSendWindow.Controls.Add($TestRunCheckBox)
$MainSendWindow.Controls.Add($CloseButton)
$MainSendWindow.Controls.Add($ServerTextBox)
$MainSendWindow.Controls.Add($UserTextBox)
$MainSendWindow.Controls.Add($MessageTextBox)
$MainSendWindow.Controls.Add($SignTextBox)
$MainSendWindow.Controls.Add($ServerTextBoxLabel)
$MainSendWindow.Controls.Add($UserTextBoxLabel)
$MainSendWindow.Controls.Add($MessageTextBoxLabel)
$MainSendWindow.Controls.Add($SignTextBoxLabel)
$MainSendWindow.ShowDialog() | Out-Null
# Confirm
Bat/Wsh/Powershell Справочник v0.05 © 2007-2025 Igor Salnikov aka SunDoctor