大约一年前,我发现了这个 PowerShell 脚本:
Function Lock-Workstation
{
param(
$Computername,
$Credential
)
if(!(get-module taskscheduler)){Import-Module TaskScheduler}
New-task -ComputerName $Computername -credential:$Credential |
Add-TaskTrigger -In (New-TimeSpan -Seconds 30) |
Add-TaskAction -Script `
{
$signature = @"
[DllImport("user32.dll", SetLastError = true)]
public static extern bool LockWorkStation();
"@
$LockWorkStation = Add-Type -memberDefinition $signature `
-name "Win32LockWorkStation" `
-namespace Win32Functions `
-passthru
$LockWorkStation::LockWorkStation() | Out-Null
} | Register-ScheduledTask TestTask -ComputerName $Computername `
-credential:$Credential
}
我无法让它工作。我收到各种奇怪的错误。它以关于无法找到终止“@”的错误开始,一旦我得到修复,它就会开始在 TaskScheduler 模块中抛出错误,特别是它无法加载类型 [__ComObject] (在几个 TaskScheduler脚本,我找不到任何文档)。
我试图让这个在 PowerShell v2 中工作。
有人有什么想法吗?
编辑1:
所以我做了一些更多的测试,它似乎在技术上是有效的(TaskScheduler 模块中有一个错字导致它完全失败),但是尽管任务被安排在远程工作站上,但它的执行任务失败,有点。尽管拥有当前登录用户的凭据,但任务通常会“运行”但没有结果。
编辑2:否决票?真的吗?我遇到了问题,我已经描述了我遇到的错误,而不是提供建议您否决了这个问题?这是什么,Reddit?