簡體   English   中英

使用powershell創建計划任務,而不是存儲密碼

[英]Create scheduled task with powershell and not store password

我正在嘗試創建一個PowerShell腳本來創建計划任務以按需運行命令。 以下是我到目前為止的代碼。

$taskName = "TestTask"
$taskPath = "<taskdir>"
$user = "$env:USERDOMAIN\$env:USERNAME"
$response = Read-host "What's your password?" -AsSecureString 
$password=[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($response))
$action = New-ScheduledTaskAction -Execute "task.cmd"
$settings = New-ScheduledTaskSettingsSet -Compatibility WIN8
$principal = New-ScheduledTaskPrincipal -UserId Administrator -LogonType S4U -RunLevel Highest
$inputObject = New-ScheduledTask -Action $action -Principal $principal -   Settings $settings 
Register-ScheduledTask -TaskName $taskName -taskpath $taskPath -InputObject $inputObject -user $user -password $Password

這很適合設置任務我唯一能找到的是能夠從管理員組中的任何用戶運行任務,而管理員(任務運行的人)沒有登錄,我不想要存儲密碼。 當我通過GUI設置任務時,我可以選擇運行的按鈕,無論用戶是否登錄,上述代碼都可以登錄。 但它不會檢查框中說不存儲密碼。 當我在powershell中運行以下命令來查看創建的任務的屬性時,輸出如下

get-scheduledtask testtask | select -ExpandProperty principal

DisplayName         :
GroupId             :
Id                  : Author
LogonType           : Password
RunLevel            : Highest
UserId              : WIN-REH2TQO7H7S\Administrator
ProcessTokenSidType : Default
RequiredPrivilege   :
PSComputerName      :

如果我通過GUI創建的任務運行相同的命令,並且不保存密碼檢查,我得到以下內容

get-scheduledtask testtask | select -ExpandProperty principal

DisplayName         :
GroupId             :
Id                  : Author
LogonType           : S4U
RunLevel            : Highest
UserId              : WIN-REH2TQO7H7S\Administrator
ProcessTokenSidType : Default
RequiredPrivilege   :
PSComputerName      :

我發現的唯一區別是LogonType是S4U與密碼。 所以在我的powershell中我添加了

$principal = New-ScheduledTaskPrincipal -UserId Administrator -LogonType S4U -RunLevel Highest

但即使代碼中的LogonType設置為S4U,它仍然會在創建時將其設置為密碼。 我可以進入GUI並在powershell代碼運行后以物理方式更改任務,並檢查該框是否設置正確。 但有沒有人知道為什么代碼不會這樣做? 或者如果我錯過了什么?

感謝您的任何幫助,您可以提供,

麥克。

我正在尋找類似的東西,使用本地管理員帳戶啟用“不存儲密碼”。 你的帖子讓我走在正確的軌道上,現在我的工作正常。

試試這個:

Register-ScheduledTask -TaskName $taskName -taskpath $taskPath -InputObject $inputObject

如果失敗,請嘗試將主體放在行中並將其從InputObject中取出:

Register-ScheduledTask -TaskName $taskName -Action $action -Principal $Principal

暫無
暫無

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

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