首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用powershell创建计划任务,而不是存储密码

使用powershell创建计划任务,而不是存储密码
EN

Stack Overflow用户
提问于 2015-09-22 21:12:46
回答 1查看 8.2K关注 0票数 5

我正在尝试创建一个powershell脚本来创建一个按需运行命令的计划任务。下面是我到目前为止所掌握的代码。

代码语言:javascript
运行
复制
$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中运行以下命令查看创建的任务的属性时,输出如下

代码语言:javascript
运行
复制
get-scheduledtask testtask | select -ExpandProperty principal

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

如果在通过GUI创建的任务上运行相同的命令(不保存密码检查),则会得到以下结果

代码语言:javascript
运行
复制
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中我添加了

代码语言:javascript
运行
复制
$principal = New-ScheduledTaskPrincipal -UserId Administrator -LogonType S4U -RunLevel Highest

但是,即使在代码中将LogonType设置为S4U,它仍然在创建密码时将其设置为密码。我可以进入GUI并在powershell代码运行后对任务进行物理更改,并选中设置正确的复选框。但是,有谁知道为什么代码不这样做呢?还是我漏掉了什么?

谢谢你能提供的帮助,

麦克。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 12:10:13

我正在寻找类似的东西,使用本地管理帐户与‘不存储密码’启用。你的帖子让我走上了正确的轨道,我的现在开始工作了。

试一试:

代码语言:javascript
运行
复制
Register-ScheduledTask -TaskName $taskName -taskpath $taskPath -InputObject $inputObject

如果失败,尝试将主体放在行中,并将其从InputObject中删除:

代码语言:javascript
运行
复制
Register-ScheduledTask -TaskName $taskName -Action $action -Principal $Principal
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32727042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档