如何有意地远程阻止用户输入?

时间:2019-03-21 13:04:46

标签: automation remote-execution remote-management

我在工作的一位学校老师有要求。他希望有一个程序或脚本可以让他锁定和解锁学生的键盘和鼠标。我做了一个powershell脚本,它在本地运行。这是代码:

function Block-UserInput($status) {
   $code = @"
     [DllImport("user32.dll")]
     public static extern bool BlockInput(bool fBlockIt);
  "@
   $userInput = Add-Type -MemberDefinition $code -Name Win32BlockInput -Namespace Win32Functions -PassThru
   $userInput::BlockInput($status)
}

Block-UserInput($true)
Start-Sleep 4
Block-UserInput($false)

但是,由于该命令在用户的单独会话中运行,因此该脚本无法远程运行。从安全角度来看,这是有道理的。以下是远程呼叫:

$password = "xxxxxxx" | ConvertTo-SecureString -asPlainText -Force
$username = "yyyyyyy" 
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
$session = New-PSSession -ComputerName 127.0.0.1 -Credential $cred

Invoke-Command -Session $session -ScriptBlock ${function:Block-UserInput} -ArgumentList $true

Invoke-Command -Session $session -ScriptBlock ${function:Block-UserInput} -ArgumentList $false

Remove-pssession -session $session

我的问题是:有没有一种方法可以远程阻止用户输入?它可以是任何类型的解决方案,包括其他编程语言或自动化软件(例如ansible)。我展示了我的解决方案(该方法无效:D),以便讨论有关如何解决此问题的一些想法。 谢谢。

0 个答案:

没有答案