وقتی به سادگی دستور Invoke-Command را می نویسیم، خروجی را روی کنسول نشان می دهد.
مثال
Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {Get-Service}
خروجی
خروجی را همراه با نام کامپیوتر نشان می دهد.
حال فرض کنید می خواهید خروجی را مرتب کنید یا می خواهید با خروجی مورد نیاز برای ذخیره آن کار کنید. شبیه این است که خروجی را در متغیر ذخیره می کنیم اما نمی توانیم خروجی را در داخل بلوک اسکریپت ذخیره کنیم و آن را در خارج نمایش دهیم.
$ser = @() Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {$ser = Get-Service} Write-Output "Services output" $ser
شما هیچ خروجی از دستور بالا دریافت نخواهید کرد زیرا فراخوانی-فرمان شناخته شده است که روی رایانه راه دور کار می کند. در عوض، می توانیم از دستور RETURN برای برگرداندن خروجی به کنسول اصلی استفاده کنیم.
$ser = @() Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {$ser = Get-Service return $ser } Write-Output "Services output" $ser
خروجی نشان داده شده در تصویر اول را دریافت خواهید کرد. همچنین اگر میخواهید با خروجی کار کنید، میتوانید کل خروجی را در متغیر ذخیره کنید.
مثال
$sb = Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock { Get-Service} Write-Output "Services output" $sb
همچنین می توانید خروجی بالا را فیلتر کنید.
$sb = Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {Get-Service} Write-Output "Services output" $sb | Select Name, Status