none
Как из powershell получить список сервисов с определенным startuptype? RRS feed

Ответы

Все ответы

  • Вот такой скрипт получился:

     

    $sb={ $sb0 = { $wmiServices = @{}
    Get-WmiObject -Class Win32_Service | ForEach-Object {
     $wmiServices.Add($_.Name,$_)
    }
    Get-Service | ForEach-Object {
     $_ | Add-Member -Name Win32_Service -MemberType NoteProperty -Value $(if ($wmiServices.ContainsKey($_.ServiceName)) {$wmiServices[$_.ServiceName]} else {$null}) -PassThru
    } | Add-Member -Name Description -MemberType ScriptProperty -Value {if ($this.Win32_Service) { $this.Win32_Service.Description }} -PassThru `
      | Add-Member -Name LogonAs -MemberType ScriptProperty -Value {if ($this.Win32_Service) { $this.Win32_Service.StartName }} -PassThru `
      | Add-Member -Name StartupType -MemberType ScriptProperty -Value {if ($this.Win32_Service) { $this.Win32_Service.StartMode }} -PassThru | where { $_.StartupType  -eq  "Auto" }
     }
    &$sb0
     }
    &$sb

     

    А в создании этого скрипта, очень помог PowerGUI. Настоятельно рекомендую установить и попробовать Smile.

     

    21 марта 2008 г. 8:47
  • Это как-то сильно уж сложно.

    Мне тогда проще на VBS написать

    21 марта 2008 г. 9:57
  •  Serv-IV написано:

    Мне тогда проще на VBS написать



    Может и не спортивно, но зато  ничего  не  надо  писать

     
    Code Snippet

    wmic service get Name,StartMode | findstr "\<Auto\>"


    или, если нужно только понятное название сервиса

    Code Snippet

    wmic service where (StartMode="Auto") get DisplayName


    21 марта 2008 г. 11:40
  • Да где-же сложно?

    Code Snippet

    Get-WmiObject -Class Win32_Service | Where-Object { $_.StartMode -eq 'Auto' }



    Code Snippet

    Get-WmiObject -Class Win32_Service | Where-Object { $_.StartMode -eq 'Auto' } | Format-Table Name, StartMode


    21 марта 2008 г. 12:07
  •  Serv-IV написано:

     

    Есть Get-Service, получаем список сервисов. А как получить список сервисов с типом запуска "авто"?

     

    Например, так

     

    Code Snippet

    get-wmiObject win32_service | Where-Object {$_.StartMode -eq "Auto"} | Format-Table -AutoSize

     

    get-wmiObject win32_service | Where-Object {$_.StartMode -eq "Auto"} | ForEach-Object -Process {Get-Service $_.name}

     

     

     

     

    Достаточно второй строки скрипта. Первая оставлена для контроля.

     

    Кстати, отметьте изумительное восприятие потока "по умолчанию" командой Get-Service. Она не выводит шапку для каждого шага цикла ...

    21 марта 2008 г. 13:48
  • А если я хочу в запросе использовать сразу два фильтра, первый $_.StartMode -eq "Auto", и второй, что в названии сервиса есть "exchange"
    26 марта 2008 г. 7:54
  • Code Snippet

    Get-WmiObject -Class Win32_Service | Where-Object { $_.StartMode -eq 'Auto' } | Where-Object { $_.Name -imatch "Exchange" }



    26 марта 2008 г. 8:18