Powershell 批处理命令响应 JSON
Powershell batch of commands response into JSON
我正在尝试在我的 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;
关于如何实现这一点有什么建议吗?
创建一个 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
我建议使用 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
这将 运行 在您正在使用的帐户的本地域上 运行 这个。
我正在尝试在我的 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;
关于如何实现这一点有什么建议吗?
创建一个 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
我建议使用 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
这将 运行 在您正在使用的帐户的本地域上 运行 这个。