DHCP Powershell 排序
DHCP Powershell sort
好吧,我很确定这更像是一个基本的 Powershell 问题,但这是我正在尝试做的事情:
我正在编写一个快速脚本,用于读取给定范围内的所有 DHCP 租约,找到任何匹配的客户端名称(在本例中,名称中包含 'iphone'),然后从 DHCP 中删除这些租约。这是我目前所拥有的:
$leases = Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | select hostname, clientid
#Find all hostnames w/ 'android' or 'iphone' in name, delete lease
$trouble = $leases | select-string -Pattern "android","iphone","ipad"
Remove-DhcpServerv4Lease -ScopeId 192.168.1.0 -ClientId $trouble
问题是 $trouble 的输出现在看起来像这样:
@{hostname=Someones-iPhone.domain.com; clientid=00-00-00-00-c7-cc}
因为我不能删除基于主机名的租约(因为这不是全局唯一的,我假设),我需要传递 MAC,也就是客户端 ID。
我怎样才能让输出精简到只有 clientid 而没有所有其他数据?我用谷歌搜索了我的心,但没有帮助。提前致谢!
您不需要使用 Select-String
来按 属性 名称进行过滤 - 使用 Where-Object
:
$Troubles = Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Where-Object {
$_.Hostname -match "android" -or
$_.Hostname -match "iphone" -or
$_.Hostname -match "ipad"
} | Select-Object ClientId
如果您只想要 ClientId
的值,请使用 Select-Object -ExpandProperty ClientId
好吧,我很确定这更像是一个基本的 Powershell 问题,但这是我正在尝试做的事情:
我正在编写一个快速脚本,用于读取给定范围内的所有 DHCP 租约,找到任何匹配的客户端名称(在本例中,名称中包含 'iphone'),然后从 DHCP 中删除这些租约。这是我目前所拥有的:
$leases = Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | select hostname, clientid
#Find all hostnames w/ 'android' or 'iphone' in name, delete lease
$trouble = $leases | select-string -Pattern "android","iphone","ipad"
Remove-DhcpServerv4Lease -ScopeId 192.168.1.0 -ClientId $trouble
问题是 $trouble 的输出现在看起来像这样:
@{hostname=Someones-iPhone.domain.com; clientid=00-00-00-00-c7-cc}
因为我不能删除基于主机名的租约(因为这不是全局唯一的,我假设),我需要传递 MAC,也就是客户端 ID。
我怎样才能让输出精简到只有 clientid 而没有所有其他数据?我用谷歌搜索了我的心,但没有帮助。提前致谢!
您不需要使用 Select-String
来按 属性 名称进行过滤 - 使用 Where-Object
:
$Troubles = Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Where-Object {
$_.Hostname -match "android" -or
$_.Hostname -match "iphone" -or
$_.Hostname -match "ipad"
} | Select-Object ClientId
如果您只想要 ClientId
的值,请使用 Select-Object -ExpandProperty ClientId