Пожалуйста, внесите следующие изменения в свой код:
Process {
ForEach ( $DName in $Domain ) {
If ( $DomainLookup.Contains($DName) ) {
Write-Host -ForegroundColor Green "Domain Name $DName found"
if ( $DomainLookup['domain1'].Contains($DName) ) {
$workstations = Get-ADComputer -Server ("{0}.{1}" -f "adc1",$domainlookup['domain1']) -SearchBase $domain1OU -Filter * |
Sort-Object -Property Name | Select-Object Name
}
}
}
}
Поскольку $Domain
может содержать массив значений, вам нужно будет проверить каждое значение объекта в этом массиве в пределах * 1005 объекта хеш-таблицы* метод.В вашем случае это значение представляется $DName
.
. В первом операторе If
метод .Contains()
проверяет значение ключа, а не значение в паре ключ-значение.См. About_Hash_Tables для ссылки на ключи и значения хеш-таблицы.См. Метод Hashtable .Contains (Object) , чтобы узнать, как работает метод Hashtable.Contains
.
При ссылке на значение определенного ключа вы можете сделать это как минимум двумя способами.Одним из способов является использование имени ключа в качестве именованного индекса, например $DomainLookup['Domain1']
.Второй способ - использовать имя ключа в качестве имени свойства, например $DomainLookup.Domain1
.В любом случае, переменная может использоваться в качестве имени индекса или имени свойства.Например, можно использовать $DomainLookup.$DName
.
Имейте в виду, что во втором операторе if
метод .Contains()
относится к классу String
.В этом методе выполняется сравнение подстроки строкового значения, полученного при обращении к значению определенного ключа.См. String.Contains метод о том, как метод .Contains(Value)
работает из класса String.
Команда Get-ADComputer
нуждалась в изменении, в частности, значение, переданное параметру -Server
.Поскольку вы хотите добавить значение из хеш-таблицы в строку adc1
, вам необходимо правильно получить это значение.Ваш исходный оператор может работать, но вам нужно будет присвоить $domain1
со значением из вашей хеш-таблицы.
В качестве примечания, вам, вероятно, не понадобятся вложенные операторы if.Я оставил их там на случай, если ваш код сделает больше, чем опубликовано.