Powershell New-Service дает отказано в разрешении - PullRequest
0 голосов
/ 05 октября 2018

Заимствовано из примера кода 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)"

New-Service: невозможно создать службу из-за следующей ошибки: доступ запрещен.

Этостранно, потому что я думал, что -RunAs сделал меня Администратором.

Есть ли что-то еще, что мне нужно сделать, чтобы запустить службу?

1 Ответ

0 голосов
/ 05 октября 2018

Это потому, что вы запускаете функцию myService в текущем экземпляре powershell, а не в новом, который вы открываете.$ (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"

Вы также можете превратить функцию в строку перед рукой и передать ее в двойных кавычках "

$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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...