我正在制作脚本以在Powershell 4.0中自动执行Windows Server 2012配置。现在我设法创建DHCP作用域,排除和预留,但我想在它们制作之前测试/检查DHCP作用域。
我的意思是我首先想要在运行我编写的函数(创建一个新范围)之前测试或检查DHCP范围是否已经存在。如果范围已存在,我希望脚本跳过该功能。如果不是,我希望它运行该函数来创建范围。 测试/检查的具体部分我不知道该怎么做。
答案 0 :(得分:1)
使用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
。
答案 1 :(得分:0)
如果您尝试通过CimSession进行远程检查,您将获得如下所示的布尔快速回答:
If((get-dhcpserverv4scope -CimSession $CimSession).ScopeId -contains "1.10.20.0" )
{... Then do this}
else { do this }