Поиск членов локальных групп

В тех случаях когда необходимо найти всех членов локальных групп не прибегая в net.exe можно использовать простую функцию на PowerShell.

function Get-LocalGroupMember{
  param(
  [Parameter(Mandatory=$true)]
  $name
  )
  try {
    $ErrorActionPreference = 'Stop'
    $users = net localgroup $name 2>&1
    $users[6..($users.count-3)] -split '\s+' | Where-Object { $_ }
  }
  catch {
    $errmsg =  $_
    if ($errmsg -match '\b(\d{1,8})\b') {
      $errmsg = net helpmsg ($matches[1])
    }
    Write-Warning "Get-LocalGroupMember : $errmsg"
  }
}

Чтобы не выводить лишних ошибок использована конструкция (2>&1), которая может быть известная тем кто программировал в Unix bash. TЭто позволяет меньше засорять вывод в случае ошибок:

PS > Get-LocalGroupMember admin
WARNING: Get-LocalGroupMember :  The specified local group does not exist.
Теги:

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Комментариев пока что нет

Оставить комментарий

(required)

(required)