windows - 我正在从后台服务运行 powershell 脚本,为什么有些命令不能像这样工作?

标签 windows powershell

我有一个 C# 后台服务。此服务轮询网络服务以获取更新。如果 web 服务返回更新,C# 服务运行 powershell 脚本并传递更新所在的 url。

此 powershell 脚本然后获取 url、下载更新(一个简单的 .zip 文件)、提取更新的内容,并运行另一个始终随更新一起提供的 powershell 脚本。

这一切都完美无缺,但某些 powershell 命令在以这种方式执行时不会执行任何操作。例如,我创建了一个带有 jpg 图像的更新,并让更新附带的 powershell 脚本将该图像设置为桌面背景。如果我手动执行此更新,它会起作用并设置新背景。但是,如果我让 C# 服务调用 powershell 脚本,它不会设置背景,即使我在它仍然没有设置后注销。

另一个似乎不起作用的命令是写入注册表。我在更新中有以下代码:

New-Item -Path HKCU:\Software\ -Name bza -Value "Default Value" –Force

当我执行它时,它会在 Software 中创建 key bza。当 C# 服务调用脚本时,注册表中没有任何反应,即使在注销并重新登录之后也是如此。

我认为对此有两种可能的解释。可能是权限不足,也可能是从后台(没有窗口)运行的 powershell 脚本无法执行它通常能够执行的所有操作。

有人有解决办法吗?

附言我们不让 C# 服务执行这些任务的原因是我们希望能够在未来扩展这个更新系统,这样我们就可以上传几乎可以做任何事情的 powershell 脚本。

P.P.S 这个运行的设备是我们自己的。我们完全有权根据用户的需要以任何我们想要的方式更改它们。

最佳答案

最可能的原因是该服务以不同的用户或系统用户身份运行。桌面图片在 HKEY_CURRENT_USER 中设置,因此在正确的用户上下文中运行 powershell 脚本很重要。

关于windows - 我正在从后台服务运行 powershell 脚本,为什么有些命令不能像这样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236751/

相关文章:

Python 请求 : Where is Crypto. dll?

windows - 在 Windows XP、SP3 上使用 RawCap 嗅探本地主机

html - 无需安装即可将 HTML 或 Word 转换为 CHM

mysql - 通过PowerShell远程连接连接到MySQL

.net - Powershell Receive-Job 可以返回数据集吗?

CreateDirectory() C (Windows VISTA/XP)

windows - Windows批处理脚本中的时间转换器

xml - Powershell XML选择属性值where子句

powershell - 如何将十进制变量转换为十六进制变量?

powershell - 在远程服务器(网络驱动器)上创建连接点