Показать полную графическую версию : [решено] Powershell и службы
Добрый вечер! Помогите сделать на powershell этот скрипт, ничего не выходит, нужно чтобы он был однострочным, и желательно без двойных ковычек (') такая допускается.
for /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "BcastDVRUserService" ^| find /i "BcastDVRUserService"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f)
DJ Mogarych
18-05-2024, 19:24
Set-Service BcastDVRUserService -StartupType Disabled
Set-Service BcastDVRUserService -StartupType Disabled »
Это не то, в windows есть службы которые генерируются, имя вернее. Пример как раз выше я написал. Ваша команда отключает только BcastDVRUserService, а BcastDVRUserService_34220 по прежнему функционирует. Скрипт видимо не прочитали до конца что я указал)
в windows есть службы »
а в powershell есть "дикие карты" :)
get-service l*
Пример в полном виде:
Get-Service -Name l* | Set-Service -Status Paused
- скорректируйте как нужно Вам...
скорректируйте как нужно Вам... »
Благодарю, почитал теперь знаю что такое в powershell есть "дикие карты" »
Но теперь ругается на | . Пробовал так же через переменную, ничего не вышло(
Get-Service -Name 'BcastDVRUserService*' | Set-Service -StartupType Disabled
DJ Mogarych
20-05-2024, 15:57
теперь ругается на | »
Как именно ругается?
Вы эти команды где пишете и как запускаете?
Пишите, чтобы не приходилось к телепатии прибегать.
Как именно ругается? »
Set-Service : Не удается настроить службу "Пользовательская служба DVR для игр и трансляции_34220 (BcastDVRUserService_
34220)" из-за следующей ошибки: Параметр задан неверно
строка:1 знак:44
+ ... vice -Name 'BcastDVRUserService*' | Set-Service -StartupType Disabled
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (System.ServiceProcess.ServiceController:ServiceController) [Set-Servi
ce], ServiceCommandException
+ FullyQualifiedErrorId : CouldNotSetService,Microsoft.PowerShell.Commands.SetServiceCommandВы эти команды где пишете и как запускаете? »
powershell от имени администратора.
DJ Mogarych
20-05-2024, 20:54
Понятно, дело не в пайпе, а в том, что нет прав на отключение этой службы даже под администратором.
В интернете приводятся разные способы типа этого (https://www.majorgeeks.com/content/page/game_recording_and_broadcasting.html), но я рекомендовать такие способы не могу.
это т.н. per-user services (https://learn.microsoft.com/en-us/windows/application-management/per-user-services-in-windows)
for /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "BcastDVRUserService" ^| find /i "BcastDVRUserService"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f) »
тут прав хватает, а через powershell нет? что то тут не так.
В интернете приводятся разные способы типа этого, но я рекомендовать такие способы не могу. »
Это всем известный твик, рабочий. Но на все службы такого типа их не найти) Изначально в .bat работает через реестр, может в powershell такой вариант сделать? Что то я затупил..
тут прав хватает, а через powershell нет? что то тут не так. »
Дело не в этом, прав не хватает на остановку службы. А в cmd не служба останавливается, там в реестре изменяется тип запуска службы... в powershell Вы тоже можете это сделать.
Выше, Вам дали верную ссылку на описание подобных служб... почитайте, что там написано (про powershell там тоже есть описание). Если аглицкий вызывает затруднения, есть такая ссылка (https://learn.microsoft.com/ru-ru/windows/application-management/per-user-services-in-windows) на ту же страницу, но на русском.
Вот так:
Set-Service -Name BcastDVRUserService -StartupType Disabled
- это должно работать. По сути, так задается шаблон для запускаемых отдельных служб...
Когда пользователь входит в Windows, ОС создает службы для каждого пользователя. При выходе пользователя эти службы останавливаются и удаляются.
Windows создает эти службы для каждого пользователя на основе шаблонов, определенных в реестре. Если вам нужно управлять поведением этих служб или управлять ими, можно настроить шаблон. Например, можно задать для типа запуска службы шаблонов значение Отключено.
При отключении службы для отдельных пользователей Windows по-прежнему создает ее при входе пользователя, но в остановленном и отключенном состоянии. При выходе пользователя Windows удаляет службу для каждого пользователя.
Т.е. управлять уже запущенной "службой для каждого пользователя", не получится, можно только настроить шаблон для её запуска в отключенном состоянии.
Добрый вечер! Помогите сделать на powershell этот скрипт, ничего не выходит, нужно чтобы он был однострочным, и желательно без двойных ковычек (') такая допускается. »
В общем понятно что ничего не понятно. Я понял что нельзя так сделать, хорошо. Тогда помогите лишить выше указанный код двойных ковычек, в одну строку! Я так понял, из за параметра find не получиться, или все же возможно как то?
Я понял что нельзя так сделать, хорошо. »
Сделать как?
Вы переходили по ссылке? Там есть всё, что надо для настройки. Сформулируйте задачу точнее.
Запретить запуск службы с LUID? Ссылка для решения вопроса (https://learn.microsoft.com/ru-ru/windows/application-management/per-user-services-in-windows#example-3-prevent-the-creation-of-per-user-services)
Или что Вы хотите автоматизировать скриптом? Это же одноразовая задача. Но тем не менее и она решается с помощью powershell
Тогда помогите лишить выше указанный код двойных ковычек, в одну строку! »
Вы понимаете, что делает тот код на cmd, который Вы пытаетесь модернизировать? Он, всего лишь изменяет записи в реестре, с чем powershell также умеет работать.
Вопрос только в том, какова конечная цель.
#Requires -runas
$pth = 'HKLM:\SYSTEM\CurrentControlSet\Services\BcastDVRUserService'
$iprop = gp $pth
$nusf = 'UserServiceFlags'
$nst = 'Start'
if (!$iprop.$nusf.count){
new-itemproperty -path $pth -name $nusf -prop 'DWORD' -val 0|out-null
} elseif ($iprop.$nusf) {
sp -path $pth -name $nusf -val 0
}
if($iprop.$nst -ne 4){
sp -path $pth -name $nst -val 4
}
- скрипт Powershell, который либо добавляет, либо изменяет значение 0 с типом 'DWORD' параметра UserServiceFlags для сервиса BcastDVRUserService, а также переводит сервис в тип запуска "Отключено"
Вы понимаете, что делает тот код на cmd, который Вы пытаетесь модернизировать? »
Это не то, в windows есть службы которые генерируются, имя вернее. Пример как раз выше я написал. Ваша команда отключает только BcastDVRUserService, а BcastDVRUserService_34220 по прежнему функционирует. Скрипт видимо не прочитали до конца что я указал) »
Я понимаю. И написал я тут, чтобы люди которые понимали что тут написано, помогли мне реализовать код на powershell.
И еще раз напишу, скрипт ищет службу по началу имени, так как последние цифры генерируются всегда. Скрипт вносит изменения в службу BcastDVRUserService, потом ищет службу по ключевому слову и добавляет еще там значение. Если и сейчас не понятно, тогда я не смогу вам объяснить.
Или что Вы хотите автоматизировать скриптом? »
Просто прочитайте скрипт что я указал в шапке, и вы поймете что я хочу.
for /f %I in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services" /k /f "BcastDVRUserService" ^| find /i "BcastDVRUserService"') do (reg add "%I" /v "Start" /t reg_dword /d 4 /f) »
Благодарю всех! Что откликнулись и за ваше время! Буду искать дальше..
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.