我正在尝试从 C# 应用程序运行 PowerShell 脚本,并且当我的 C# 应用程序作为非管理员用户(例如网络服务或其他域帐户)运行时,我需要运行该脚本。
以前,我使用以下代码:
using (RunspaceInvoke invoker = new RunspaceInvoke())
{
// load the powershell module
invoker.Invoke("Import-Module MyModule");
// run the cmdlet defined in the module
invoker.Invoke("MyCmdlet");
}
我不知道这是否是运行模块中定义的 cmdlet 的最佳方法(如果有更好的方法,请教我!)。无论如何,如果我以管理用户身份运行,这将非常有效。但是,我尝试将其作为网络服务运行,但在 RunspaceInvoke 的构造函数中出现了一个不友好的错误:
不允许请求的注册表访问。
有没有办法可以将我的 PowerShell cmdlet 作为非提升用户(例如网络服务)运行?我不需要或不希望访问注册表。cmdlet 本身也不需要提升的权限。