![配置管理器 cmdlet 无法以系统帐户身份运行。“值不能为空。参数名称:key”](https://linux22.com/image/778396/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86%E5%99%A8%20cmdlet%20%E6%97%A0%E6%B3%95%E4%BB%A5%E7%B3%BB%E7%BB%9F%E5%B8%90%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E3%80%82%E2%80%9C%E5%80%BC%E4%B8%8D%E8%83%BD%E4%B8%BA%E7%A9%BA%E3%80%82%E5%8F%82%E6%95%B0%E5%90%8D%E7%A7%B0%EF%BC%9Akey%E2%80%9D.png)
我想出了一个不错的 PowerShell 脚本,用于根据 MS Patch Tuesday + Offset 管理 Configuration Manager 中的每月维护时段。创建、更新和清理选项。以管理员身份交互运行时,该脚本运行良好。但是,当作为计划任务或配置项(预期用途)运行时,它会失败。我使用 psexec.exe 以系统身份运行交互式 PowerShell 会话,该脚本成功映射了 PSDrive 并导入了模块,但随后所有 cmdlet 都因相同的错误而失败。
New-CMSchedule:值不能为空。参数名称:key
Get-CMCollection:值不能为空。参数名称:key
Get-CMMaintenanceWindow:值不能为空。参数名称:key
[错误:New-CMSchedule:值不能为空。参数名称:key][1] [1]: https://i.stack.imgur.com/AEM2l.png
由于所有 cmdlet 都没有 key 参数,我相信错误是在堆栈跟踪'at System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value)'中引用的
有人知道我是否遗漏了解决方法,或者这只是模块编写方式的限制吗?提前致谢
答案1
虽然有点晚了,但可能会对其他人有所帮助。我必须以服务帐户身份登录服务器上运行计划任务中的 cmdlet,然后运行一次控制台,才能通过计划任务工作。