【发布时间】:2023-07-31 01:42:01
【问题描述】:
我可能把这弄得太复杂了。有人写了一个PowerShell脚本来重新配置和激活W2K8服务器上的KMS,它是由SCCM部署的。他剧本的关键是:
cmd /c $env:systemroot\Sysnative\cscript.exe //Nologo .\slmgr.vbs /skms <newIPAddress> | Out-Host
它在一堆系统上都不起作用,我的任务是清理。
首先,注意事项。由于网络安全限制,我不能远程调用服务器上的可执行文件,所以我不能使用 Invoke-Command 或类似的东西。此外,服务器是 W2K8,但它们只有 PS 2.0。
所以我有了编写脚本来创建计划任务来运行命令的想法。由于 2.0 的限制,我创建了一个 COM 对象 Schedule.Service,其中一个参数是 Action,这是我放置可执行文件、开关和参数的位置,所有这些都将加载到 Actions 选项卡中计划任务。
这就是我卡住的地方。我已经尝试了很多引号中的封闭部分的组合,使用显式路径代替环境变量(尽管这意味着如果路径不同,它有时会失败)等等。
如果我看对了,我需要“操作”选项卡来执行以下操作: 1. 启动 PowerShell 2. 让 PowerShell 打开命令行 3.让命令行启动cscript 4. 让 cscript 使用适当的参数运行 slmgr.vbs
不知何故,在玩弄所有这些球时,有些东西掉了下来。我能想到的最接近的是:
powershell.exe -nologo & 'cmd $env:systemroot\Sysnative\cscript.exe //Nologo .\slmgr.vbs /skms <newIPAddress>'
当我在操作选项卡中手动创建计划任务,然后运行它时,powershell 启动,屏幕上闪烁红色,然后在我阅读之前关闭,并且任务报告“操作成功完成” .只是为了测试,我也试过:
powershell.exe & 'cmd' "cscript slmgr.vbs"
这会启动 PowerShell,它会打开一个 DOS shell,因为此时它不会接受 PS 命令,但不会发生其他任何事情,并且任务报告“任务当前正在运行”
我错过了什么?
【问题讨论】:
标签: powershell cmd scheduled-tasks wsh