我正在尝试使用PowerShell从Windows DHCP服务器获取DHCP租约的MAC地址和相关IP地址的JSON数组。
使用此:Get-DhcpServerv4Lease -ScopeId 192.168.0.0 | Where-Object {$_.AddressState -eq "ActiveReservation"} | Select-Object -Property ClientId,IPAddress | ConvertTo-Json
我得到这个输出:
[
{
"ClientId": "00-11-22-33-44-55",
"IPAddress": {
"Address": 12345678,
"AddressFamily": 2,
"ScopeId" : null,
"IPAddressToString": "192.168.0.2"
}
},
{
"ClientId": "00-11-22-33-44-66",
"IPAddress": {
"Address": 12345679,
"AddressFamily": 2,
"ScopeId" : null,
"IPAddressToString": "192.168.0.3"
}
}
]
但我只想要IPAddressToString的ClientId和值,而不想要其他属性:
[
{
"ClientId": "00-11-22-33-44-55",
"IPAddressToString": "192.168.0.2"
},
{
"ClientId": "00-11-22-33-44-66",
"IPAddressToString": "192.168.0.3"
}
]
这在一个班轮里可能吗?
试试这个
Get-DhcpServerv4Lease -ScopeId 192.168.0.0 | Where-Object { $_.AddressState -eq "ActiveReservation" } | Select-Object -Property ClientId, @{Name = "Address"; Expression = { $_.IpAddress.IPAddressToString} } | ConvertTo-Json
由于返回的json是一个数组,我认为您需要循环遍历等元素
Get-DhcpServerv4Lease -ScopeId 192.168.0.0 |
Where-Object {$_.AddressState -eq "ActiveReservation"} |
ForEach-Object {
$_ | Select-Object ClientId, @{Name = 'IPAddress'; Expression = {$_.IPAddress.IPAddressToString}}
} | ConvertTo-Json
输出:
[{"ClientId":"00-11-22-33-44-55","IP地址":"192.168.0.2"},{"ClientId":"00-11-22-33-44-66","IPAddress":"192.168.0.3"}]
p.S.你可以把它写成一行代码,但这会让代码更难阅读,更容易出错,而且写长行代码也没有任何好处。这样做只会让事情变得更加困难