Это возможно. Но для подключения к интерактивному сеансу требуется обходной путь.
Загрузите PowerShellPack и установите его. Вам нужен только один модуль с именем «TaskScheduler».
Я тестировал следующий код:
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
}
Вы можете использовать это так:
Lock-Workstation "NameOfTheComputer" (Get-Credential)
или как это:
Lock-Workstation "NameOfTheComputer"
Если в Connect-ToTaskScheduler появляется ошибка при указании учетных данных, это происходит из-за опечатки в модуле (отредактируйте Connect-ToTaskScheduler.ps1 и замените "$ NetworkCredentail.Domain," на "$ NetworkCredential.Domain,"