从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
使我成为管理员。
启动服务还需要做些其他事情吗?
答案 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"