В вашем l oop, если он у вас есть, вам нужно удалить его из доступного списка IPA, переданного в ..
Например (есть, конечно, более элегантные способы сделать X или Y , но это всего лишь идея - и непроверенная, поскольку у меня нет среды для выполнения этого варианта использования):
что-то вроде этого: al oop
# Set the Ipa range
([System.Collections.ArrayList]$IpaRange = 200..254 |
ForEach{"10.84.64.$PSItem"})
# Results
<#
10.84.64.200
10.84.64.201
10.84.64.202
...
#>
$IpaRange.Count
# Results
<#
55
#>
$TargetIpa = ''
# Get the first IPA to use
($TargetIpa = Get-Random $IpaRange -Count 1)
# Results
<#
10.84.64.242
#>
If ($IpaRange -contains $TargetIpa)
{
$IpaRange.Remove("$TargetIpa")
($TargetIpa = Get-Random $IpaRange -Count 1)
$IpaRange.Count
}
# Results
<#
10.84.64.231
54
#>
# Or
# Set the Ipa range
[System.Collections.ArrayList]$IpaRange = 200..254 |
ForEach{"10.84.64.$PSItem"}
# First IPA to use
$TargetIpa = Get-Random $IpaRange -Count 1
<#
# First VM IPA
#Static ip config
$ipmask = $TargetIpa
$dgw = "10.84.64.193"
$netcard = "Ethernet0"
#>
Try
{
do
{
If ($IpaRange -contains $TargetIpa)
{
$IpaRange.Remove("$TargetIpa")
($TargetIpa = Get-Random $IpaRange -Count 1)
<#
#Static ip config
$ipmask = $TargetIpa
$dgw = "10.84.64.193"
$netcard = "Ethernet0"
#>
$IpaRange.Count
}
}
while ($IpaRange.Count -ne 0)
}
Catch
{Write-Warning -Message 'IP address assignments complete.'}
# Results
<#
10.84.64.233
54
10.84.64.205
53
10.84.64.241
52
...
10.84.64.235
3
10.84.64.214
2
10.84.64.231
1
WARNING: IP address assignments complete.
#>