約 1 年前、私はこの 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?