【发布时间】:2014-12-09 13:07:20
【问题描述】:
正如问题所述,我实际上很感兴趣,但我所追求的是一种暂时禁用计划运行的机制(在多个服务器上,使用共享磁盘),同时仍然能够以交互方式运行它(如果可以制作脚本来判断它是否从任务调度程序启动)。外部标志(文件的存在)似乎是一种简单的方法。
第一个选项使用“%SESSIONNAME%”,从调度程序启动时它似乎是空的,尽管从 powershell 启动时也是如此(使用 Start-Process,这可能是禁用时允许使用的选项)。
编辑:第二个选项,使用whoami cmd-command 似乎更有希望,它报告用户属于组 NT AUTHORITY\BATCH 从任务调度程序运行时(但不是当交互式运行)。我可以用这个在脚上开枪吗?可以在我背后“永久”地将用户添加到该组吗?
我们使用的是 Windows Server 2012 R2。 PowerShell 解决方案会很有趣,因为可能会使用包装器(甚至可以将 .bat 修改/重写为 .ps1)。
【问题讨论】:
-
让预定版本将
/sched命令行传递给bat? -
谢谢,你的意思是像命令行参数?几乎是作弊 ;-)
-
当然,对我来说似乎是一种可以接受的方法
-
当然(也谢谢),我可能会这样做,但我宁愿将这个逻辑“隐藏”在脚本中。如果它是合理可行的,它可能会为其他脚本派上用场。
-
.Net 类 [System.Security.Principal.WindowsIdentity] 有一些有趣的属性。
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name将给我用户帐户,在这种情况下,它将是(或可以成为)特定帐户。不过还是在作弊。
标签: windows powershell batch-file scheduled-tasks