使用管理员权限从C#执行Powershell脚本

时间:2018-09-10 13:22:40

标签: c# powershell

我正在计划以具有管理员权限的C#执行Powershell脚本。

我尝试了很多方法,但没有结果。

我能做的最好的就是使用runas Verb启动一个进程(System.Diagnostics.Process.Start(p))。这样,如果执行服务的用户是管理员,那么我可以运行我的Powershell脚本。

但是,我需要的是使用低特权用户执行服务,并在需要时与管理员“登录”并执行powershell脚本。

我试图模仿管理员,但是没有用...

答案Execute PowerShell as an administrator from C#不能解决问题,我仍然无法运行脚本。答案来自2009年,我希望有人同时解决了此类问题。

        // powershell script execution
        var processInfo = new System.Diagnostics.ProcessStartInfo
        {
            Verb = "runas",
            LoadUserProfile = true,
            FileName = "powershell.exe",
            Arguments = scriptPath,
            RedirectStandardOutput = true,
            UseShellExecute = false
        };

        var p = System.Diagnostics.Process.Start(processInfo);

1 个答案:

答案 0 :(得分:1)

假冒应该起作用。但是,我通常会避免这样做,因为如果不需要,我不喜欢存储用户凭据。

在我正在处理的应用程序中,我遇到了与此类似的需求。 该应用程序在IIS中运行,大多数时候不需要(也不应该具有)完全管理员权限。 为了应对这种情况,我运行了具有完全管理员权限的单独应用程序(Windows服务)。 它接受来自IIS应用程序的请求并执行适当的管理功能。

我的IIS应用程序和Windows服务通过AMQP(使用RabbitMQ)进行交谈。但是,您可以轻松使用喜欢的任何通信渠道-HTTP,TCP,甚至只是创建一个文件,然后让管理应用程序查找该文件。