Как составить список всех служб, работающих с учетной записью службы на сервере, используя Powershell - PullRequest
3 голосов
/ 07 сентября 2011

Я хочу обновить пароль всех служб, работающих под одной учетной записью на нескольких серверах, используя powershell. я пробовал командлеты Get-process, Get-WMIObject, но эти две команды не используют учетную запись службы. Есть ли способ обновить пароль всех служб, работающих с учетной записью, передавая служебную учетную запись, пароль в качестве параметров для сценария.

Ответы [ 4 ]

10 голосов
/ 07 сентября 2011

Чтобы получить список услуг с использованием определенной учетной записи, вы можете сделать:

Get-WmiObject "win32_service" -Filter "StartName='domain\\user'"

Чтобы изменить пароль для них, вы можете сделать:

Get-WmiObject "win32_service" -Filter "StartName='domain\\user'" | 
%{$_.StopService();$_.Change($null,$null,$null,$null,$null,$null,$null,"blah");}

Отсюда: http://www.send4help.net/change-remote-windows-service-credentials-password-powershel-495

2 голосов
/ 07 сентября 2011

попробуйте это:

Function GLOBAL:GET-PROCESSUSER ( $ProcessID ) {

    (GET-WMIOBJECT win32_process  –filter “Handle=$ProcessID”).GetOwner().User

}

$svcs = Get-Process | Select-Object name, starttime, ID

$a = @()


foreach ($svc in $svcs)
{ 
           if ( $svc.name -ne "Idle" -and $svc.name -ne "System")
           {           


           $al = New-Object System.Object
           $al | Add-Member -type NoteProperty -name Name -Value $svc.name
           $al | Add-Member -type NoteProperty -name Owner -Value ( get-processuser $svc.id)

           $a += $al
           } 
}

$a

Редактировать после комментария:

$a = (GET-WMIOBJECT win32_service) | ? { $_.startname -eq "domain\\username"} | %{$_.StopService();$_.Change($null,$null,$null,$null,$null,$null,$null,"newpassword");}
1 голос
/ 25 апреля 2016

Это то, что вам нужно, ребята

Get-WMIObject Win32_Service | Where-Object {$_.startname -ne "localSystem" }| Where-Object {$_.startname -ne "NT AUTHORITY\LocalService" } |Where-Object {$_.startname -ne "NT AUTHORITY\NetworkService" } |select startname, name 
0 голосов
/ 14 мая 2019

Да, кажется, это лучший подход

Get-WMIObject Win32_Service | Where-Object {($_.startname -ne "NT AUTHORITY\LocalService") -and ($_.startname -ne "NT AUTHORITY\NetworkService") -and ($_.startname -ne "localSystem") } `
|select @{ Name = "Service Account " ; Expression = { ( $_.startname ) } }, `
@{ Name = "Service Dispaly Name " ; Expression = { ( $_.name ) } }, StartMode,State, Status | FT -AutoSize
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...