about_Remote_Output

Deskripsi singkat

Menjelaskan cara menginterpretasikan dan memformat output perintah jarak jauh.

Deskripsi panjang

Output perintah yang dijalankan pada komputer jarak jauh mungkin terlihat seperti output dari perintah yang sama yang dijalankan pada komputer lokal, tetapi ada beberapa perbedaan yang signifikan.

Topik ini menjelaskan cara menginterpretasikan, memformat, dan menampilkan output perintah yang dijalankan di komputer jarak jauh.

MENAMPILKAN NAMA KOMPUTER

Saat Anda menggunakan cmdlet Invoke-Command untuk menjalankan perintah di komputer jarak jauh, perintah mengembalikan objek yang menyertakan nama komputer yang menghasilkan data. Nama komputer jarak jauh disimpan di properti PSComputerName.

Untuk banyak perintah, PSComputerName ditampilkan secara default. Misalnya, perintah berikut menjalankan perintah Get-Culture pada dua komputer jarak jauh, Server01 dan Server02. Output, yang muncul di bawah ini, mencakup nama komputer jarak jauh tempat perintah dijalankan.

C:\PS> invoke-command -script {get-culture} -comp Server01, Server02

LCID  Name    DisplayName                PSComputerName
----  ----    -----------                --------------
1033  en-US   English (United States)    Server01
1033  es-AR   Spanish (Argentina)        Server02

Anda dapat menggunakan parameter HideComputerName dari Invoke-Command untuk menyembunyikan properti PSComputerName. Parameter ini dirancang untuk perintah yang mengumpulkan data hanya dari satu komputer jarak jauh.

Perintah berikut menjalankan perintah Get-Culture pada komputer jarak jauh Server01. Ini menggunakan parameter HideComputerName untuk menyembunyikan properti PSComputerName dan properti terkait.

C:\PS> invoke-command -scr {get-culture} -comp Server01 -HideComputerName

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

Anda juga dapat menampilkan properti PSComputerName jika tidak ditampilkan secara default.

Misalnya, perintah berikut menggunakan cmdlet Format-Table untuk menambahkan properti PSComputerName ke output perintah Get-Date jarak jauh.

$dates = invoke-command -script {get-date} -computername Server01, Server02
$dates | format-table DateTime, PSComputerName -auto

DateTime                            PSComputerName
--------                            --------------
Monday, July 21, 2008 7:16:58 PM    Server01
Monday, July 21, 2008 7:16:58 PM    Server02

MENAMPILKAN PROPERTI MACHINENAME

Beberapa cmdlet, termasuk Get-Process, Get-Service, dan Get-EventLog, memiliki parameter ComputerName yang mendapatkan objek di komputer jarak jauh. Cmdlet ini tidak menggunakan jarak jauh PowerShell, sehingga Anda dapat menggunakannya bahkan pada komputer yang tidak dikonfigurasi untuk jarak jauh di Windows PowerShell.

Objek yang dikembalikan cmdlet ini menyimpan nama komputer jarak jauh di properti MachineName. (Objek ini tidak memiliki properti PSComputerName.)

Misalnya, perintah ini mendapatkan proses PowerShell pada komputer jarak jauh Server01 dan Server02. Tampilan default tidak menyertakan properti MachineName.

C:\PS> get-process PowerShell -computername server01, server02

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
920      38    97524     114504   575     9.66   2648 PowerShell
194       6    24256      32384   142            3020 PowerShell
352      27    63472      63520   577     3.84   4796 PowerShell

Anda dapat menggunakan cmdlet Format-Table untuk menampilkan properti MachineName dari objek proses.

Misalnya, perintah berikut menyimpan proses dalam variabel $p lalu menggunakan operator alur (|) untuk mengirim proses dalam $p ke perintah Format-Table. Perintah menggunakan parameter Properti Format-Table untuk menyertakan properti MachineName dalam tampilan.

C:\PS> $p = get-process PowerShell -comp Server01, Server02
C:\PS> $P | format-table -property ID, ProcessName, MachineName -auto

Id ProcessName MachineName
-- ----------- -----------
2648 PowerShell  Server02
3020 PowerShell  Server01
4796 PowerShell  Server02

Perintah yang lebih kompleks berikut menambahkan properti MachineName ke tampilan proses default. Ini menggunakan tabel hash untuk menentukan properti terhitung. Untungnya, Anda tidak perlu memahaminya untuk menggunakannya.

(Perhatikan bahwa backtick ['] adalah karakter kelanjutan.)

C:\PS> $p = get-process PowerShell -comp Server01, Server02

C:\PS> $p | format-table -property Handles, `
@{Label="NPM(K)";Expression={int}}, `
@{Label="PM(K)";Expression={int}}, `
@{Label="WS(K)";Expression={int}}, `
@{Label="VM(M)";Expression={int}}, `
@{Label="CPU(s)";Expression={if ($.CPU -ne $()){ $.CPU.ToString("N")}}}, `
Id, ProcessName, MachineName -auto

Handles NPM(K) PM(K)  WS(K) VM(M) CPU(s)   Id ProcessName MachineName
------- ------ -----  ----- ----- ------   -- ----------- -----------
920     38 97560 114532   576        2648 PowerShell  Server02
192      6 24132  32028   140        3020 PowerShell  Server01
438     26 48436  59132   565        4796 PowerShell  Server02

OBJEK YANG DIDESERIALISASI

Saat Anda menjalankan perintah jarak jauh yang menghasilkan output, output perintah dikirimkan di seluruh jaringan kembali ke komputer lokal.

Karena sebagian besar objek microsoft .NET Framework langsung (seperti objek yang dikembalikan cmdlet PowerShell) tidak dapat dikirimkan melalui jaringan, objek langsung "diserialisasikan". Dengan kata lain, objek langsung dikonversi menjadi representasi XML objek dan propertinya. Kemudian, objek serial berbasis XML ditransmisikan di seluruh jaringan.

Di komputer lokal, PowerShell menerima objek serial berbasis XML dan "mendeserialisasi" dengan mengonversi objek berbasis XML menjadi objek .NET Framework standar.

Namun, objek yang dideserialisasi bukan objek langsung. Ini adalah rekam jepret objek pada saat diserialisasikan, dan mencakup properti tetapi tidak ada metode. Anda dapat menggunakan dan mengelola objek ini di PowerShell, termasuk meneruskannya dalam alur, menampilkan properti yang dipilih, dan memformatnya.

Sebagian besar objek yang dideserialisasi secara otomatis diformat untuk ditampilkan oleh entri dalam file Type.ps1xml atau Format.ps1xml. Namun, komputer lokal mungkin tidak memiliki file pemformatan untuk semua objek yang dideserialisasi yang dihasilkan pada komputer jarak jauh. Saat objek tidak diformat, semua properti setiap objek muncul di konsol dalam daftar streaming.

Saat objek tidak diformat secara otomatis, Anda bisa menggunakan cmdlet pemformatan, seperti Format-Table atau Format-List, untuk memformat dan menampilkan properti yang dipilih. Atau, Anda dapat menggunakan cmdlet Out-GridView untuk menampilkan objek dalam tabel.

Selain itu, jika Anda menjalankan perintah pada komputer jarak jauh yang menggunakan cmdlet yang tidak Anda miliki di komputer lokal Anda, objek yang dikembalikan perintah mungkin tidak diformat dengan benar karena Anda tidak memiliki file pemformatan untuk objek tersebut di komputer Anda. Untuk mendapatkan data pemformatan dari komputer lain, gunakan cmdlet Get-FormatData dan Export-FormatData.

Beberapa jenis objek, seperti objek DirectoryInfo dan GUID, dikonversi kembali menjadi objek langsung saat diterima. Objek ini tidak memerlukan penanganan atau pemformatan khusus.

MENGURUTKAN HASIL

Urutan nama komputer dalam parameter ComputerName cmdlet menentukan urutan di mana PowerShell terhubung ke komputer jarak jauh. Namun, hasilnya muncul dalam urutan di mana komputer lokal menerimanya, yang mungkin merupakan urutan yang berbeda.

Untuk mengubah urutan hasil, gunakan cmdlet Sort-Object. Anda dapat mengurutkan pada properti PSComputerName atau MachineName. Anda juga dapat mengurutkan properti lain dari objek sehingga hasil dari komputer yang berbeda diselingi.

Lihat juga