CustomScriptExtension不能运行Start-Process(访问被拒绝)。

3 人关注

我想在用户的ssl存储中安装一个证书。因此,我想用用户的凭证运行 Start-Process ,同时设置 -LoadUserProfile 。否则,导入过程将以 "未找到文件 " 而失败。

由于我想在配置虚拟机时做这件事,我使用了CustomScriptExtension。当用RDP登录到机器上时,该命令运行良好,但在扩展程序中却不行。我得到了 "Start-Process : 由于错误,这个命令不能运行。访问被拒绝"。

我想执行的用户(NTAUTHORITY/SYSTEM)有足够的权限来执行该命令。有什么建议吗?

一个带有随机密码的新用户账户被生成,其凭证被存储在 $credentials $filePath 指向一个自定义的 c# 命令行工具来导入证书。 $certPass 是作为参数提供的。下面是我的代码。

Start-Process -LoadUserProfile -NoNewWindow -Credential $credentials -FilePath $filePath -ArgumentList @("--importCertificate", $certPass)

这个问题在某种程度上与这个问题有关。

powershell
azure
ssl
virtual-machine
david
david
发布于 2017-01-09
1 个回答
Jens Haeusser
Jens Haeusser
发布于 2017-07-20
已采纳
0 人赞同

出于安全考虑,SYSTEM用户不允许冒充其他用户(通过Start-Process、runas等)--关于冒充的详情,请参见 认证后冒充客户端

虽然你可以尝试调整GPO或编辑注册表(使用ntrights.exe等命令行工具),以便使用Start-Process,但我更喜欢 使用PsExec(来自Sysinternals套件) 。与Start-Process类似,PsExec可以让你输入用户名和密码,但也有一个-h标志,如果有的话,可以用该账户的高级令牌来调用进程。

你的命令将是这样的。

psexec -h -u $username -p $password c:\path\to\tool.exe --importCertificate $certPass