Что именно вы пытаетесь достичь здесь?
Простой Get-WMIObject и пара Read-Hosts должны сделать то, что вам нужно:
$className = Read-Host "Enter Class Name"
$computerName = Read-Host "Enter Computer Name"
if ([string]::IsNullOrWhitespace($computerName)) {
$computerName = "."
}
Get-WmiObject -ComputerName $computerName -Class $className
Включите немного дополнительной проверки ошибок, чтобы вы не пытались проверить недопустимое имя класса и т.д., И вы должны быть готовы. Пример ниже:
Вы также можете связываться внутри командных строк следующим образом:
Get-WMIObject -Class ($string1 + "32" + "_" + $string2) -ComputerName "."
(в этом случае $ string1 содержит "WIN", а $ string2 содержит "BIOS")
Вещи в скобках обрабатываются до его родительской команды. Вы можете даже пойти глубже и сделать скобки в скобках .. PowerShell запускается на самом глубоком уровне и работает до тех пор, пока не достигнет родительской команды, а затем выполнит полностью вычисленные строки.