Форма Powershell для списка сетевых машин
Всем привет,
Я пытаюсь заставить сообщение сценария powershell появиться на компьютерах некоторых пользователей в сети, чтобы предупредить их о завершении работы, циклически просматривая CSV-файл с именами машин. У меня есть сценарий powershell, созданный для отображения подходящего сообщения со значком предупреждения, и я обнаружил, что для форматирования всплывающего окна определенным образом мне пришлось использовать "форму", а не всплывающее окно сообщений по умолчанию. Я также обнаружил, что мне пришлось использовать графическое поле для отображения значка предупреждения, так как приведенный ниже код не будет работать
$WarningIcon = New-Object ([System.Окна.MessageBoxImage]::Предупреждение)
$Form.Controls.Добавить($WarningIcon)
Я также могу перебирать CSV-файлы имен машин и пытаться отправить форму в виде "msg" на каждую пользовательскую машину, но пока это не сработает.
Что я уже пробовал:
Я много искал в интернете, но до сих пор не могу найти способ отправить форму в список имен машин, извлеченных из CSV. До сих пор я пытался установить форму (сценарий ниже) в переменную $msg, а также пытался иметь форму в другом файле и ссылаться на этот файл в переменной $msg, но это не работает. Также попробовал иметь форму непосредственно после "$ID" в цикле ниже и перед скобкой закрытия цикла.
Вот сценарий цикла msg Powershell и сценарий Формы, где я попытался иметь сценарий Формы в другом файле, на который можно было бы ссылаться. Форма показывает именно то, что я хочу отобразить. Но как я уже сказал, ничего из того, что я пробовал до сих пор, не работает. Можно ли это сделать, пожалуйста? Заранее спасибо
$msg = C:\PShell\Form.txt $csv = Import-csv "C:\PShell\Machines.csv" foreach($line in $csv) { $ID = $line.("LPID") #Echo "Laptop ID is $ID" msg $ID $msg } #FORM Script Add-Type -AssemblyName System.Windows.Forms $Form = New-Object system.Windows.Forms.Form $Form.Width = 700 $Form.Height = 400 $Form.BackColor = "#DCDCDC" $Form.Text = "System Restart Alert" $Font = New-Object System.Drawing.Font("Ariel",30, [System.Drawing.FontStyle]::Bold::Underline) $FontB = New-Object System.Drawing.Font("Ariel",14, [System.Drawing.FontStyle]::Bold) $Picture = (get-item ("C:\PShell\Exclamation.jpg")) $img = [System.Drawing.Image]::Fromfile($Picture) $pictureBox = new-object Windows.Forms.PictureBox $pictureBox.Location = New-object System.Drawing.Size(160,30) $pictureBox.Height = "100" $pictureBox.Image = $img $Form.controls.add($pictureBox) $Label = New-Object System.Windows.Forms.Label $Label.Location = "260,30" $Label.Font = $Font $Label.ForeColor = "Red" $Label.Text = "WARNING!" $Label.AutoSize = $True $Form.Controls.Add($Label) $LabelB = New-Object System.Windows.Forms.Label $LabelB.Location = "100,130" $LabelB.Font = $FontB $LabelB.Text = "Due to essential maintenance system requires rebooting" $LabelB.AutoSize = $True $Form.Controls.Add($LabelB) $LabelC = New-Object System.Windows.Forms.Label $LabelC.Location = "100,160" $LabelC.Font = $FontB $LabelC.Text = "Please save all work immediately" $LabelC.AutoSize = $True $Form.Controls.Add($LabelC) $okButton = New-Object System.Windows.Forms.Button $okButton.Location = "300,280" $okButton.Font = "$FontB" $okButton.Size = "85,28" $okButton.Text = "Okay" $Form.Controls.Add($okButton) $okButton.Add_Click = ({$Form.Close()}) $Form.ShowDialog()