繁体   English   中英

CustomScriptExtension 无法运行 Start-Process(访问被拒绝)

[英]CustomScriptExtension cannot run Start-Process (Access is denied)

我想在用户 ssl 存储中安装证书。 因此,我想使用用户凭据运行Start-Process并设置-LoadUserProfile 否则导入过程将失败并显示“找不到文件”

由于我想在配置 VM 时执行此操作,因此我使用的是 CustomScriptExtension。 当使用 RDP 登录计算机但不在扩展中时,该命令运行良好。 我收到“启动进程:由于错误:访问被拒绝,无法运行此命令。”

我认为执行用户 (NTAUTHORITY\\SYSTEM) 有足够的权限来执行命令。 有什么建议?

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

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

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

出于安全原因,不允许 SYSTEM 用户模拟其他用户(通过 Start-Process、runas 等) - 有关模拟的详细信息,请参阅身份验证后模拟客户端

虽然您可以尝试调整 GPO 或编辑注册表(使用命令行工具,如 ntrights.exe)以使用 Start-Process,但我更喜欢 使用 PsExec(来自 Sysinternals Suite) 与 Start-Process 类似,PsExec 允许您传入用户名和密码,但还有一个 -h 标志,用于使用帐户的提升令牌调用进程(如果可用)。

您的命令将类似于:

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

在我的 ARM 模板 CustomScriptExtension PowerShell 脚本中,我喜欢使用 Chocolatey 安装 PsExec:

Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
C:\ProgramData\chocolatey\bin\choco.exe install -y sysinternals

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM