Лучший отвечающий
Функция назначения прав на службы

Вопрос
-
Привет всем! Нашел классную функцию для изменения прав управления службой, помогите пожалуйста, если не сложно добавить возможность удаления прав.
Функция:
function perms { Param( [Parameter(Mandatory=$True)] [string]$Username, [Parameter(Mandatory=$True)] [string]$Service, [Parameter(Mandatory=$True)] [string]$Rights, [Parameter(Mandatory=$True)] [string]$Computer ) $servicetest = Get-Service -ComputerName $Computer | where {$_.name -eq "$service"} if (!$servicetest -and $service -ne "scmanager") { Write-Output "Service $service does not exist on $Computer. Please supply the name and not the display name" exit } $domain = ($username.split("\"))[0] $user = ($username.split("\"))[1] $ntaccount = New-Object System.Security.Principal.NTAccount($domain,$user) $sid = ($ntaccount.Translate([System.Security.Principal.SecurityIdentifier])).value if (!$sid) { return "User $username cannot be resolved to a SID. Does the account exist?" exit } $sddl = & $env:SystemRoot\System32\sc.exe \\$Computer sdshow "$Service" if ($sddl -match $sid) { return "User $username already has some sort of access in the SDDL. Remediate manually" exit } switch ($Rights) { "Read" { $sddl = $sddl + "(A;;LCRPRC;;;$sid)" } "Reset" { $sddl = $sddl + "(A;;LCRPWPRC;;;$sid)" } default { return "Invalid rights option, please select either read or reset"; exit } } $sddlset = & $env:SystemRoot\System32\sc.exe \\$Computer sdset "$service" "$sddl" $sddlverify = & $env:SystemRoot\System32\sc.exe \\$Computer sdshow "$Service" if ($sddlset -notlike "*SUCCESS*") { return "Permissions did not set" } elseif ($sddlverify -notmatch $sid) { return "Permissions did not set properly. Resolve manually" } else { return "Permission $Rights set successfully on $Computer for $username on $service" } }
20 апреля 2018 г. 3:56
Ответы
-
Неа.. все проверки убрал, но все равно права остаются
я там скобку пропустил но должно работать
посмотрите сейчас при запуске какие будут sddl before и sddl after
The opinion expressed by me is not an official position of Microsoft
- Помечено в качестве ответа Sel83 20 апреля 2018 г. 7:02
20 апреля 2018 г. 6:08Модератор
Все ответы
-
"sddl before: $sddl"
switch ($Rights) { "Read" { $sddl = $sddl + "(A;;LCRPRC;;;$sid)" } "Reset" { $sddl = $sddl + "(A;;LCRPWPRC;;;$sid)" }
"remove" {$sddl = $sddl -replace "\([AD];;\w+;;;$sid\)" ; "sddl after $sddl"} default { return "Invalid rights option, please select either read or reset"; exit } }
только перед использованием в продуктиве - потестируйте на том кого не жалко
The opinion expressed by me is not an official position of Microsoft
- Изменено Vector BCOModerator 20 апреля 2018 г. 6:07
20 апреля 2018 г. 5:10Модератор -
Неа.. все проверки убрал, но все равно права остаются20 апреля 2018 г. 5:30
-
Неа.. все проверки убрал, но все равно права остаются
я там скобку пропустил но должно работать
посмотрите сейчас при запуске какие будут sddl before и sddl after
The opinion expressed by me is not an official position of Microsoft
- Помечено в качестве ответа Sel83 20 апреля 2018 г. 7:02
20 апреля 2018 г. 6:08Модератор -
Да, работает! Спасибо!20 апреля 2018 г. 7:02