Пакет команд Powershell отвечает на JSON - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь получить список пользователей и групп на моем windows хосте. Я могу захватить информацию о пользователях и группах и назначить ее для переменных $ users и $ groups с помощью следующих команд:

    $groups=$(Get-WmiObject win32_group | Select Name | Sort Name); $users=$(Get-WmiObject -Class Win32_UserAccount | Select Name | Sort Name)

Что я не могу понять, так это как передать их в ConvertTo- JSON функция, где каждый из них получает свои собственные ключи, т.е. я хотел бы, чтобы ответ выглядел следующим образом:

{
    "users": ["john", "geroge", "ringo"],
    "groups": ["drums", "guitar"]
}

Я пробовал несколько вариантов этого, но не могу получить правильный синтаксис для powershell и функция ConvertTo- JSON.

    $jsonBlob=$(\"groups\" : $(groups), \"users"\ : $(users); ConvertTo-Json $jsonBlob;

Есть предложения о том, как этого добиться?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Я бы рекомендовал использовать DirectorySearcher для поиска пользователей и групп. Это будет более эффективно и сфокусировано только на имени.

$usearcher = [adsisearcher]'(&(objectCategory=User)(objectclass=person))'
$gsearcher = [adsisearcher]'(objectCategory=group)'

$usearcher.PropertiesToLoad.Add("name")
$gsearcher.PropertiesToLoad.Add("name")

$usearcher.SizeLimit = 1000
$gsearcher.SizeLimit = 1000

$obj = [pscustomobject]@{
           users  = $usearcher.FindAll() | % { $_.properties['name'][0] } 
           groups = $gsearcher.FindAll() | % { $_.properties['name'][0] }
           }

$json = $obj | ConvertTo-Json

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

0 голосов
/ 19 февраля 2020

Создайте PSCustomObject и трубу, которая ConvertTo-Json

$groups = Get-WmiObject -Class Win32_Group | Sort-Object Name
$users = Get-WmiObject -Class Win32_UserAccount | Sort-Object Name
$jsonBlob = [PSCustomObject]@{"users" = $users.Name;"groups" = $groups.Name} | ConvertTo-Json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...