Powershell新服务授予拒绝权限

时间:2018-10-05 12:05:39

标签: powershell

从Microsoft示例代码中借来的:

function myService() {
  New-Service -Name "MyService" -BinaryPathName "c:\windows\system32\svchost.exe -k netsvcs"
}

Start-Process -FilePath powershell.exe -Verb RunAs -Wait -ArgumentList '-Command',"$(myService)"
  

新服务:由于以下错误而无法创建服务:访问被拒绝。

这很奇怪,因为我以为-RunAs使我成为管理员。

启动服务还需要做些其他事情吗?

1 个答案:

答案 0 :(得分:1)

这是因为您在当前Powershell实例中而不是在要打开的新实例中运行myService函数。 $(myService)是一个表达式,因为它的双引号“在当前的powershell实例中运行,并且结果传递到Start-Process实例。

您需要将该函数作为字符串传递给Start-Process

Start-Process -FilePath powershell.exe -Verb RunAs -Wait -ArgumentList '-Command',"function myService() {New-Service -Name 'MyService' -BinaryPathName 'c:\windows\system32\svchost.exe -k netsvcs'};myService"

您还可以先将该函数制成字符串,然后以双qoutes的形式传递它。

$Function1 = @"
function myService() {
    New-Service -Name 'MyService' -BinaryPathName 'c:\windows\system32\svchost.exe -k netsvcs'
}
"@
Start-Process -FilePath powershell.exe -Verb RunAs -Wait -ArgumentList '-Command',"$Function1;myService;pause"