簡體   English   中英

向所有無法使用的用戶發送遠程Powershell彈出消息

[英]Remote Powershell Popup message to all users not working

我在創建遠程Powershell彈出消息時遇到一些問題。

我有一個工作腳本,該腳本顯示了要發送給遠程用戶的彈出消息。 但是,每當我將其捆綁到.ps1腳本中並遠程運行時,它都不會向已登錄的用戶發送彈出消息。 我知道腳本可以正確運行,因為腳本的其他部分可以正確執行。 我能夠在本地計算機上運行彈出消息,因此這不是腳本錯誤。

腳本是:

    Add-Type -AssemblyName System.Windows.Forms
    $Form = New-Object system.Windows.Forms.Form
    $Form.Text = 'ALERT!'
    $form.ControlBox = $false; 
    $Image = [system.drawing.image]::FromFile('\\filepath') 
    $Form.BackgroundImage = $Image 
    $Form.BackgroundImageLayout = 'Stretch'
    $Form.Width = (680)
    $Form.Height = (550) 
    $OKButton = New-Object System.Windows.Forms.Button 
    $OKButton.Location = New-Object System.Drawing.Size(500,445) 
    $OKButton.Size = New-Object System.Drawing.Size(100,50) 
    $OKButton.Text = 'Accept'
    $OKButton.Font = New-Object System.Drawing.Font('Times New Roman',18) 
    $OKButton.Add_Click({$Form.Close()}) 
    $Form.Controls.Add($OKButton) 
    $Form.Add_Shown({$Form.Activate()}) 
    [void] $Form.ShowDialog()

我將其作為.ps1的一部分運行,該文件以以下方式調用:

Invoke-WmiMethod -Class Win32_Process -ComputerName $computer -Name Create -ArgumentList "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe \\$computer\C$\folder\script.ps1

我正在從Windows 7企業台式機上執行命令的服務器上將腳本作為服務帳戶運行。 目標計算機執行策略設置為不受限制,因此我知道這不是腳本執行策略問題。

我直覺它沒有在目標計算機上彈出的原因是因為運行腳本的帳戶和登錄到目標計算機的帳戶不同,但是我可能不正確。

你的預感是正確的。 PowerShell腳本在服務帳戶的上下文中運行,並且不會對任何已登錄的用戶顯示。 (例如,如果您的腳本啟動了notepad.exe,它將僅針對服務帳戶運行)。

在同一帳戶下本地運行命令時,您會看到它彈出。

@Adrian R是正確的,您可以使用msg.exe發送消息,或更友好的命令行方式:

net send /users message

如果要顯示更復雜的內容(例如完整的Windows窗體)而不是經典消息框,則需要在用戶上下文中運行某些內容。 一種方法是將PsExec-i (交互式選項)一起使用,而不是使用PowerShell遠程處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM