【问题标题】:Unable to set windows service Runas from powershell无法从 powershell 设置 Windows 服务 Runas
【发布时间】:2021-01-26 08:27:45
【问题描述】:

我想将 Windows 服务设置为以特定用户(管理员)身份运行。这是我的第一次尝试。

$myArgs = 'config "service22" start= demand obj= "'+$machineName+'\'+$userName+'" password= "'+$userPassword+'"'
Start-Process -FilePath sc.exe -ArgumentList $myArgs

我也尝试过多次更改变量的位置(所有地方都试过)

$svc = Get-WmiObject win32_service -filter "name='service22'"
$svc.change($null,$null,$null,$null,$null,$null,$null,$null,$null,$userName,$userPassword)

脚本无法使用,但我可以手动设置。

【问题讨论】:

  • You may want to look at this 据我所知,您以错误的方式调用 Start-Process
  • 我没有发现您的第二个查询有任何问题,您是否停止并启动了服务以使更改生效
  • 这会返回任何东西吗Get-WmiObject win32_service -filter "name='service22'"
  • 这是我写主机时返回的内容:\\vmname\root\cimv2:Win32_Service.Name="service22"

标签: powershell azure-powershell


【解决方案1】:

无需过于复杂。

只是:

Invoke-Command -ComputerName computername -ScriptBlock {
    Set-Service -Name servicename -Credential (Get-Credential user@domain.com)
}

PS:Set-Service 在 powershell v7(已测试)中具有 Credential 参数,在 Windows Powershell 中没有

【讨论】:

【解决方案2】:

here得到提示

只需要在末尾添加type=own

$myArgs = 'config "service22" start= demand obj= "'+$machineName+'\'+$userName+'" password= "'+$userPassword+'" type=own'
Start-Process -FilePath sc.exe -ArgumentList $myArgs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多