Invoke-Command: недопустимы одно или несколько имен компьютеров
Я получаю сообщение об ошибке при выполнении этой команды:
Invoke-Command -ComputerName $Targets -ScriptBlock $ScriptBlock
$Targets
- это массив, который заполняется этой командой:
Get-ADComputer -Filter "Name -like '$Filter'" -SearchBase $OU |
Select-Object -ExpandProperty Name |
Sort-Object
Имена компьютеров обычно содержат -
, но я проверил компьютеры без каких-либо специальных символов и получил тот же результат.
Вот мой метод:
function Get-FilteredADComputers
{
[CmdletBinding()]
[OutputType([System.String[]])]
param
(
[Parameter(Position = 0, Mandatory)]
[ValidateSet('Site 1', 'Site 2', 'Site 3')]
[String]
$Site,
[Parameter(Position = 1, Mandatory)]
[ValidateSet('Client', 'Server')]
[String]
$ComputerType,
[Parameter(Position = 2, Mandatory)]
[String]
$Filter
)
$siteSecondLevel
switch($Site){
"site 1"{$siteSecondLevel = "LVL 1"}
"site 2"{$siteSecondLevel = "LVL 2"}
"site 3"{$siteSecondLevel = "LVL 3"}
}
$OU = "OU=$ComputerType,OU=Devices,OU=$siteSecondLevel,OU=$Site,OU=MyOU,DC=mydomain,DC=com"
Get-ADComputer -Filter {Name -like $Filter} -SearchBase $OU | Select-Object -ExpandProperty Name | Sort-Object
}
Как я могу объявить свой список в тестовой среде:
$temp = Get-FilteredADComputers -Site Site1 -ComputerType Client -Filter
"myfilter"
$target = @()
foreach($t in $temp){
if($t -ne $null -or $t -ne ""){
$target += $t
}
}
Я также получаю тот же результат, просто объявив мой массив как $Targets = Get-FilteredADComputers