Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Замена Net Send (http://forum.oszone.net/showthread.php?t=223055)

dosperados 16-12-2011 05:38 1816250

Замена Net Send
 
Как все знают начиния с Vista а также в Win 7 нет команды net send, что ну очень неудобно...
Я придумал как на 7ки на Vista и XP отправлять сообщения - описал это в своем блоге. Блог Dosperados

dosperados 29-12-2011 12:41 1824793

Многие начинающие админы после появления в своей сети машин с ОС Windows 7 задумались над тем как отправлять на них сообщения (оповещения).

В Windows XP была удобная хотя и очень привередливая "служба отправки сообщений" эта служба позволяла отправлять сообщения всем ПК в домене net sent * "Текст сообщения!" Но были значительные ограничения на количество знаков, которые можно было написать в сообщении. Очень часто сообщения не влезали, но это не самое страшное: Сообщения частенько не доходили из-за того, что у кого то отключена служба у кого то, она просто остановилась и если человек заблокировал ПК он не увидеть сообщение, до разблокировки своей станции.

В результате поисков родилось следующее решение, данной проблемы. Будем использовать POWERSHELL. Единственным его недостатком яв-ся, то что сообщение сможет отправить только администраотр.

отправка сообщений на Windows 7.ps1

Для работы командлета Get-QadComputer, необходимо установить комадлеты от Quest Software для работы с AD
PHP код:

#параметры
param (
 
$message = (Read-Host -Prompt "Введите текст сообщения для отправки: ")
 )
$cComps = @()
$OnlinePC = @()
$OfflinePC = @()
# Создаем переменную процесса с параметрами
$Proc "msg.exe -v -time:90000 * $message"
# Получение Всех ПК из АД
$cComps GET-QADcomputer | % { $_.Name }
Write-Host "Сheck the availability of PC, please wait...`t" -NoNewline
$cComps 
Sort-Object name | % {
$name $_
if (test-connection -computer $name -quiet -Count 1 ) { $OnlinePC += $name}
 else { if (
test-connection -computer $name -quiet) {$OnlinePC += $name$OfflinePC += $name}
 }
Write-Host "Done!"
Write-Host "ON line PC:"$OnlinePC.Count
Write
-Host "OFF line PC:"$OfflinePC.Count -ForegroundColor red
$OnlinePC 
| % {
([
WMICLASS]"\\$_\Root\CimV2:Win32_Process").create($Proc) | Out-Null
if ($?) {"Сообщение на $_ отправлено"} else {Write-Host "На $_ проблемы с отправкой сообщения" -BackgroundColor Black -ForegroundColor Red}
 }
$OfflinePC | %{
Write-Host $_ "OFF Line" -BackgroundColor Red -ForegroundColor Black


Вот отдельно представляю функцию Send-NetMessage
для удовства можно поместить ее в профиль powershell`a и слегкостью пользоваться...
PHP код:

<#
.SYNOPSIS 
Отправка сообщений на ПК Win 7
VistaXP. (по типу Net Send)

.
PARAMETER message
Текст сообщения для отправки
.

.
PARAMETER name
Имя ПК для отправки
.

.
INPUTS
Необходимо указать параметры 
"Message""Name".

.
EXAMPLE
PS
Send-Messege -Name comp-01 -Message "Текст сообщения"

.NOTES
Author
:  Yakel Vitaly

#>
function Send-NetMessage {
param    (
     
$message = (Read-Host -Prompt "Введите текст сообщения для отправки: "),
    
$name = (Read-Host -Prompt "Введите Имя ПК: ")
         )
# Создаем переменную процесса с параметрами
$Proc "msg.exe -v -time:90000 * $message"

([WMICLASS]"\\$name\Root\CimV2:Win32_Process").create($Proc) | Out-Null
if ($?) {"Сообщение на $name отправлено"} else {Write-Host "На $name
проблемы с отправкой сообщения" 
-BackgroundColor Black -ForegroundColor Red}




Время: 10:53.

Время: 10:53.
© OSzone.net 2001-