【问题标题】:Powershell in VB.NET with Admin rights具有管理员权限的 VB.NET 中的 Powershell
【发布时间】:2012-10-17 09:51:29
【问题描述】:

我正在使用 PowerShell 命令编写一个 Web 服务,我想在其中启动和停止本地计算机和远程计算机上的服务。

在远程计算机上启动和停止服务不是问题。我使用 WmiObject 执行此操作,如下所示。

如果我想启动本地服务,它会说我没有权限。

如果我想启动本地服务,我不能将 WmiObject 与凭据一起使用。

如何以管理员权限启动服务?

我的脚本(strScriptText):

$username = "domain\administrator"
$pw = convertto-securestring "password" -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $pw
$computername = "serverAB"
if ( $computername.Contains("serverAB")){(Get-WmiObject -class Win32_Service -filter "name='AppIDSvc'").startservice().returnvalue}
else {(Get-WmiObject -class Win32_Service -ComputerName $computername -Credential $cred -filter "name='AppIDSvc'").startservice().returnvalue}

vb:

 runspace = RunspaceFactory.CreateRunspace()
        runspace.Open()
 pipeline = runspace.CreatePipeline()

pipeline.Commands.AddScript(strScriptText)
                pipeline.Commands.Add("Out-String")

【问题讨论】:

    标签: vb.net powershell administrator


    【解决方案1】:

    您不能尝试通过 PowerShell 使用旧的 .NET 方法吗?

    # Create an authentication object
    $ConOptions = New-Object System.Management.ConnectionOptions
    $ConOptions.Username = "dom\jpb"
    $ConOptions.Password = "pwd"
    $ConOptions.EnablePrivileges = $true
    $ConOptions.Impersonation = "Impersonate"
    $ConOptions.Authentication = "Default"
    
    # Creation of a rmote or local process
    $scope = New-Object System.Management.ManagementScope("\\dom.fr\root\cimV2", $ConOptions)
    $ObjectGetOptions = New-Object System.Management.ObjectGetOptions($null, 
                                                              [System.TimeSpan]::MaxValue, $true)
    $proc = New-Object System.Management.ManagementClass($scope, 
                                          "\\dom.fr\ROOT\CIMV2:Win32_Process", $ObjectGetOptions)
    
    # Equivalent to : 
    # $proc = [wmiclass]"\\.\ROOT\CIMV2:Win32_Process"
    # $res = $proc.Create("cmd.exe")
    

    【讨论】:

    • 感谢您的回答,但我认为这不是我想要做的......这只是打开一个 CMD 窗口......
    • 嗯,这是一个显示如何编码 WMI 请求凭据的示例,这就是您要查找的内容?
    • 不,你可以看到我已经在使用 WMI 对象的凭据。但如果我想控制本地机器上的服务,WMI 对象不接受凭据。如果是这种情况,我以非管理用户身份登录并且无权启动该服务,但我想启动它。所以必须有办法控制它。但是怎么做?!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2021-05-23
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    相关资源
    最近更新 更多