Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Powershell и службы (http://forum.oszone.net/showthread.php?t=355282)

a1ek9 18-05-2024 15:11 3027373

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 3027382

Код:

Set-Service BcastDVRUserService -StartupType Disabled

a1ek9 19-05-2024 20:21 3027411

Цитата:

Цитата DJ Mogarych
Set-Service BcastDVRUserService -StartupType Disabled »

Это не то, в windows есть службы которые генерируются, имя вернее. Пример как раз выше я написал. Ваша команда отключает только BcastDVRUserService, а BcastDVRUserService_34220 по прежнему функционирует. Скрипт видимо не прочитали до конца что я указал)

YuS_2 19-05-2024 21:48 3027416

Цитата:

Цитата a1ek9
в windows есть службы »

а в powershell есть "дикие карты" :)
Код:

get-service l*
Пример в полном виде:
Код:

Get-Service -Name l* | Set-Service -Status Paused
- скорректируйте как нужно Вам...

a1ek9 20-05-2024 14:18 3027434

Цитата:

Цитата YuS_2
скорректируйте как нужно Вам... »

Благодарю, почитал теперь знаю что такое
Цитата:

Цитата YuS_2
в powershell есть "дикие карты" »

Но теперь ругается на | . Пробовал так же через переменную, ничего не вышло(
Код:

Get-Service -Name 'BcastDVRUserService*' | Set-Service -StartupType Disabled

DJ Mogarych 20-05-2024 15:57 3027436

Цитата:

Цитата a1ek9
теперь ругается на | »

Как именно ругается?
Вы эти команды где пишете и как запускаете?
Пишите, чтобы не приходилось к телепатии прибегать.

a1ek9 20-05-2024 17:32 3027437

Цитата:

Цитата DJ Mogarych
Как именно ругается? »

Код:

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

Цитата:

Цитата DJ Mogarych
Вы эти команды где пишете и как запускаете? »

powershell от имени администратора.

DJ Mogarych 20-05-2024 20:54 3027442

Понятно, дело не в пайпе, а в том, что нет прав на отключение этой службы даже под администратором.

В интернете приводятся разные способы типа этого, но я рекомендовать такие способы не могу.

Sham 20-05-2024 21:56 3027444

это т.н. per-user services

a1ek9 20-05-2024 22:10 3027445

Цитата:

Цитата a1ek9
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 нет? что то тут не так.
Цитата:

Цитата DJ Mogarych
В интернете приводятся разные способы типа этого, но я рекомендовать такие способы не могу. »

Это всем известный твик, рабочий. Но на все службы такого типа их не найти) Изначально в .bat работает через реестр, может в powershell такой вариант сделать? Что то я затупил..

YuS_2 21-05-2024 09:28 3027450

Цитата:

Цитата a1ek9
тут прав хватает, а через powershell нет? что то тут не так. »

Дело не в этом, прав не хватает на остановку службы. А в cmd не служба останавливается, там в реестре изменяется тип запуска службы... в powershell Вы тоже можете это сделать.
Выше, Вам дали верную ссылку на описание подобных служб... почитайте, что там написано (про powershell там тоже есть описание). Если аглицкий вызывает затруднения, есть такая ссылка на ту же страницу, но на русском.
Вот так:
Код:

Set-Service -Name BcastDVRUserService -StartupType Disabled
- это должно работать. По сути, так задается шаблон для запускаемых отдельных служб...
Цитата:

Когда пользователь входит в Windows, ОС создает службы для каждого пользователя. При выходе пользователя эти службы останавливаются и удаляются.
Цитата:

Windows создает эти службы для каждого пользователя на основе шаблонов, определенных в реестре. Если вам нужно управлять поведением этих служб или управлять ими, можно настроить шаблон. Например, можно задать для типа запуска службы шаблонов значение Отключено.
Цитата:

При отключении службы для отдельных пользователей Windows по-прежнему создает ее при входе пользователя, но в остановленном и отключенном состоянии. При выходе пользователя Windows удаляет службу для каждого пользователя.
Т.е. управлять уже запущенной "службой для каждого пользователя", не получится, можно только настроить шаблон для её запуска в отключенном состоянии.

a1ek9 25-05-2024 20:31 3027566

Цитата:

Цитата a1ek9
Добрый вечер! Помогите сделать на powershell этот скрипт, ничего не выходит, нужно чтобы он был однострочным, и желательно без двойных ковычек (') такая допускается. »

В общем понятно что ничего не понятно. Я понял что нельзя так сделать, хорошо. Тогда помогите лишить выше указанный код двойных ковычек, в одну строку! Я так понял, из за параметра find не получиться, или все же возможно как то?

YuS_2 26-05-2024 00:15 3027577

Цитата:

Цитата a1ek9
Я понял что нельзя так сделать, хорошо. »

Сделать как?
Вы переходили по ссылке? Там есть всё, что надо для настройки. Сформулируйте задачу точнее.
Запретить запуск службы с LUID? Ссылка для решения вопроса
Или что Вы хотите автоматизировать скриптом? Это же одноразовая задача. Но тем не менее и она решается с помощью powershell

Цитата:

Цитата a1ek9
Тогда помогите лишить выше указанный код двойных ковычек, в одну строку! »

Вы понимаете, что делает тот код на cmd, который Вы пытаетесь модернизировать? Он, всего лишь изменяет записи в реестре, с чем powershell также умеет работать.
Вопрос только в том, какова конечная цель.

YuS_2 26-05-2024 10:57 3027582

Код:

#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, а также переводит сервис в тип запуска "Отключено"

a1ek9 27-05-2024 11:21 3027605

Цитата:

Цитата YuS_2
Вы понимаете, что делает тот код на cmd, который Вы пытаетесь модернизировать? »

Цитата:

Цитата a1ek9
Это не то, в windows есть службы которые генерируются, имя вернее. Пример как раз выше я написал. Ваша команда отключает только BcastDVRUserService, а BcastDVRUserService_34220 по прежнему функционирует. Скрипт видимо не прочитали до конца что я указал) »

Я понимаю. И написал я тут, чтобы люди которые понимали что тут написано, помогли мне реализовать код на powershell.
И еще раз напишу, скрипт ищет службу по началу имени, так как последние цифры генерируются всегда. Скрипт вносит изменения в службу BcastDVRUserService, потом ищет службу по ключевому слову и добавляет еще там значение. Если и сейчас не понятно, тогда я не смогу вам объяснить.
Цитата:

Цитата YuS_2
Или что Вы хотите автоматизировать скриптом? »

Просто прочитайте скрипт что я указал в шапке, и вы поймете что я хочу.
Цитата:

Цитата a1ek9
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) »

Благодарю всех! Что откликнулись и за ваше время! Буду искать дальше..


Время: 02:09.

Время: 02:09.
© OSzone.net 2001-