检查 DHCP 作用域是否存在
Check if DHCP scope exists
我正在编写脚本以在 Powershell 4.0 中自动执行 Windows Server 2012 配置。现在我设法创建了 DHCP 作用域、排除项和保留项,但我想 test/check 在创建 DHCP 作用域之前。
我的意思是,在运行我编写的函数(创建新范围)之前,我首先要测试或检查 DHCP 范围是否已经存在。如果范围已经存在,我希望脚本跳过该函数。如果不是,我希望它 运行 创建作用域的函数。
具体的部分testing/checking不知道怎么做
使用 Get-DhcpServerv4Scope
列出现有范围并通过 Where-Object
(别名 ?
)过滤列表以获取您要验证的名称或 ID:
if (-not (Get-DhcpServerv4Scope | ? { $_.Name -eq 'foo' })) {
Add-DhcpServerv4Scope ...
}
或
if (-not (Get-DhcpServerv4Scope | ? { $_.ScopeId -eq '192.168.23.0' })) {
Add-DhcpServerv4Scope ...
}
您可以将检查包装在自定义函数中
function Test-DhcpServerv4Scope {
[CmdletBinding(DefaultParameterSetName='name')]
Param(
[Parameter(Mandatory=$true, ParameterSetName='name')]
[string]$Name,
[Parameter(Mandatory=$true, ParameterSetName='id')]
[string]$ScopeId
)
$p = $MyInvocation.BoundParameters.Keys
[bool](Get-DhcpServerv4Scope | Where-Object {
$_.$p -eq $MyInvocation.BoundParameters[$p]
})
}
并像这样使用它:
if (-not (Test-DhcpServerv4Scope -Name 'foo')) {
Add-DhcpServerv4Scope ...
}
或者像这样:
if (-not (Test-DhcpServerv4Scope -ScopeId '192.168.23.0')) {
Add-DhcpServerv4Scope ...
}
如果您要处理 IPv6 范围,请将 *-DhcpServerv4Scope
替换为 *-DhcpServerv6Scope
。
如果您尝试远程检查,例如通过 CimSession,您可能会得到像这样的快速布尔值答案:
If((get-dhcpserverv4scope -CimSession $CimSession).ScopeId -contains "1.10.20.0" )
{... Then do this}
else { do this }
我正在编写脚本以在 Powershell 4.0 中自动执行 Windows Server 2012 配置。现在我设法创建了 DHCP 作用域、排除项和保留项,但我想 test/check 在创建 DHCP 作用域之前。
我的意思是,在运行我编写的函数(创建新范围)之前,我首先要测试或检查 DHCP 范围是否已经存在。如果范围已经存在,我希望脚本跳过该函数。如果不是,我希望它 运行 创建作用域的函数。 具体的部分testing/checking不知道怎么做
使用 Get-DhcpServerv4Scope
列出现有范围并通过 Where-Object
(别名 ?
)过滤列表以获取您要验证的名称或 ID:
if (-not (Get-DhcpServerv4Scope | ? { $_.Name -eq 'foo' })) {
Add-DhcpServerv4Scope ...
}
或
if (-not (Get-DhcpServerv4Scope | ? { $_.ScopeId -eq '192.168.23.0' })) {
Add-DhcpServerv4Scope ...
}
您可以将检查包装在自定义函数中
function Test-DhcpServerv4Scope {
[CmdletBinding(DefaultParameterSetName='name')]
Param(
[Parameter(Mandatory=$true, ParameterSetName='name')]
[string]$Name,
[Parameter(Mandatory=$true, ParameterSetName='id')]
[string]$ScopeId
)
$p = $MyInvocation.BoundParameters.Keys
[bool](Get-DhcpServerv4Scope | Where-Object {
$_.$p -eq $MyInvocation.BoundParameters[$p]
})
}
并像这样使用它:
if (-not (Test-DhcpServerv4Scope -Name 'foo')) {
Add-DhcpServerv4Scope ...
}
或者像这样:
if (-not (Test-DhcpServerv4Scope -ScopeId '192.168.23.0')) {
Add-DhcpServerv4Scope ...
}
如果您要处理 IPv6 范围,请将 *-DhcpServerv4Scope
替换为 *-DhcpServerv6Scope
。
如果您尝试远程检查,例如通过 CimSession,您可能会得到像这样的快速布尔值答案:
If((get-dhcpserverv4scope -CimSession $CimSession).ScopeId -contains "1.10.20.0" )
{... Then do this}
else { do this }