2016-12-01 3 views
1

У меня есть следующий код, который работает в качестве автономного запроса:СЛУЧАЯ, IfElse или ПЕРЕКЛЮЧАТЕЛЬ Powershell изменить вывод Get-WmiObject

$Type = (Invoke-Command -ComputerName $Computer -ScriptBlock { Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty Manufacturer }) 

    switch -regex ($Type) 
    { 
     "VMw.+" {"VM"} 
     default {"Physical"} 
    } 

Я хочу, чтобы добавить команду переключения в команде Invoke вместо переменной (отбрасывая переменную $ Type), чтобы ее можно было запускать на нескольких компьютерах, как это можно сделать, я не решил использовать Switch для достижения конечного результата?

ответ

1

Get-WmiObject имеет ComputerName свойство, так что вам не нужно использовать Invoke-Command

switch -regex (Get-WmiObject -ComputerName $Computer -Class Win32_ComputerSystem | Select-Object -ExpandProperty Manufacturer) 
{ 
    "VMw.+" {"VM"} 
    default {"Physical"} 
} 

И обернув его в простой foreach петли вы можете легко запустить его на нескольких компьютерах:

$Computers = "computer1","computer3","computer3" 

foreach ($Computer in $Computers) { 
    switch -regex (Get-WmiObject -ComputerName $Computer -Class Win32_ComputerSystem | Select-Object -ExpandProperty Manufacturer) 
    { 
     "VMw.+" {Write-Output "$Computer is a VM Computer"} 
     default {Write-Output "$Computer is a Physical Computer"} 
    } 
} 
+0

Это работает для меня: 'code'" Type "= switch -regex (Get-WmiObject -ComputerName $ Computer -Class Win32_ComputerSystem | Select-Object -ExpandProperty Manufacturer) { "VMw. +" {Write-Output "VM"} default {Write-Output "Physical"} } – pinchepooch

 Смежные вопросы

  • Нет связанных вопросов^_^