Powershell CustomScriptExtension无法运行启动进程(访问被拒绝)

Powershell CustomScriptExtension无法运行启动进程(访问被拒绝),powershell,azure,ssl,virtual-machine,Powershell,Azure,Ssl,Virtual Machine,我想在用户ssl存储中安装证书。因此,我希望使用用户凭据运行启动进程,并设置-LoadUserProfile。否则导入过程将失败,并显示“未找到文件” 因为我想在配置VM时执行此操作,所以我使用CustomScriptExtension。当使用RDP登录到计算机但不在扩展中时,该命令运行正常。我收到“启动进程:由于错误,无法运行此命令:访问被拒绝。” 我认为执行用户(nAuthority\SYSTEM)有足够的权限执行该命令。有什么建议吗 将生成带有随机密码的新用户帐户,其凭据存储在$crede

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

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

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

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

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

此问题在某种程度上与。

出于安全原因,不允许系统用户模拟其他用户(通过启动进程、运行方式等)-有关模拟的详细信息,请参阅

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

然后,您的命令将类似于:

psexec -h -u $username -p $password c:\path\to\tool.exe --importCertificate $certPass
在我的ARM模板CustomScriptExtension PowerShell脚本中,我喜欢使用Chocolate安装PsExec:

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

如果第一次运行,请不要忘记/接受EULA参数。