Я делаю скрипт для регистрации моего API в качестве службы Windows. Я следовал этому руководству здесь и заполнил его в меру своих возможностей, так как я новичок в PS:
$acl = Get-Acl "$PSScriptRoot"
$aclRuleArgs = {DOMAIN OR COMPUTER NAME\USER}, "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs)
$acl.SetAccessRule($accessRule)
$acl | Set-Acl "$PSScriptRoot"
New-Service -Name MyAPIService -BinaryPathName $PSScriptRoot\MyAPIService.exe -Credential {DOMAIN OR COMPUTER NAME\USER} -Description "API" -DisplayName "API Service" -StartupType Automatic
То, что я хотел бы знать, это как я могу получить текущийимя домена или компьютера, как я получаю текущий каталог с $ PSScriptRoot. Служба будет работать на Windows 10. Я также не знаю, должен ли я использовать домен или имя компьютера \ пользователя? В какой ситуации мне понадобится один или другой?
РЕДАКТИРОВАТЬ: С помощью @Patrick я заставил его работать, вот рабочий скрипт:
$acl = Get-Acl "$PSScriptRoot"
$aclRuleArgs = "$env:COMPUTERNAME\$env:USERNAME", "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs)
$acl.SetAccessRule($accessRule)
$acl | Set-Acl "$PSScriptRoot"
New-Service -Name MyAPIService -BinaryPathName $PSScriptRoot\MyAPIService.exe Description "API" -DisplayName "API Service" -StartupType Automatic