如何从C#作为非提升用户运行PowerShell脚本

Chr*_*lum 10 c# security powershell powershell-2.0

我正在尝试从C#应用程序运行PowerShell脚本,当我的C#app作为非管理员用户(例如网络服务或其他域帐户)运行时,我需要运行该脚本.

以前,我使用以下代码:

using (RunspaceInvoke invoker = new RunspaceInvoke())
{
    // load the powershell module
    invoker.Invoke("Import-Module MyModule");

    // run the cmdlet defined in the module 
    invoker.Invoke("MyCmdlet");
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是运行模块中定义的cmdlet的最佳方法(如果有更好的方法,请教我!).无论如何,如果我作为管理用户运行,这将完美地运行.我尝试将其作为网络服务运行,然而,我在RunspaceInvoke的构造函数中得到了一个不友好的错误:

不允许请求的注册表访问.

有没有办法可以将我的PowerShell cmdlet作为非提升用户运行,例如网络服务?我不需要或不希望访问注册表.cmdlet本身也不需要提升权限.

Ika*_*aso -1

我认为这篇文章会回答你的问题。