ARGOMENTO
    about_Remote_Output

DESCRIZIONE BREVE
    Descrive come interpretare e formattare l'output dei comandi remoti.

DESCRIZIONE DETTAGLIATA
    L'output di un comando eseguito in un computer remoto è simile 
    all'output dello stesso comando eseguito in un computer locale, 
    ma vi sono alcune differenze significative.

    In questo argomento viene illustrato come interpretare, 
    formattare e visualizzare l'output di comandi che eseguiti in 
    computer remoti.

                    
 VISUALIZZAZIONE DEL NOME DEL COMPUTER

    Quando si utilizza il cmdlet Invoke-Command per eseguire un 
    comando in un computer remoto, il comando restituisce un oggetto 
    che include il nome del computer che ha generato i dati. Il nome 
    del computer remoto viene archiviato nella proprietà PSComputerName.

    Per molti comandi, viene visualizzato PSComputerName per 
    impostazione predefinita. Il comando seguente, ad esempio, esegue 
    un comando Get-Culture su due computer remoti, Server01 e 
    Server02. L'output riportato di seguito include i nomi dei 
    computer remoti in cui il comando è stato eseguito.

        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

    
    È possibile utilizzare il parametro HideComputerName di 
    Invoke-Command per nascondere la proprietà PSComputerName. Questo 
    parametro è progettato per i comandi che raccolgono dati da un 
    solo computer remoto.

    Il comando seguente esegue un comando Get-Culture nel computer 
    remoto Server01. Utilizza il parametro HideComputerName per 
    nascondere la proprietà PSComputerName e le proprietà correlate.


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

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



     È anche possibile visualizzare la proprietà PSComputerName, se 
     non visualizzata per impostazione predefinita. 

     I comandi seguenti, ad esempio, utilizzano il cmdlet 
     Format-Table per aggiungere la proprietà PSComputerName 
     all'output di un comando Get-Date remoto.

        C:\PS> $dates = invoke-command -script {get-date} -computername Server01, Server02
        C:\PS> $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      


 VISUALIZZAZIONE DELLA PROPRIETÀ MACHINENAME

    Diversi cmdlet, tra cui Get-Process, Get-Service e Get-EventLog, 
    dispongono di un parametro ComputerName che ottiene gli oggetti 
    in un computer remoto.
    Questi cmdlet non utilizzano la comunicazione remota di Windows 
    PowerShell,  ed è pertanto possibile utilizzarli anche in 
    computer non configurati per la comunicazione remota in Windows 
    PowerShell.

    Gli oggetti restituiti da questi cmdlet archiviano il nome del 
    computer remoto nella proprietà MachineName (questi oggetti non 
    dispongono di una proprietà PSComputerName).

    Questo comando, ad esempio, ottiene il processo di PowerShell nei 
    computer remoti Server01 e Server02. La visualizzazione 
    predefinita non include la proprietà 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

    È possibile utilizzare il cmdlet Format-Table per visualizzare la 
    proprietà MachineName degli oggetti processo. 

    Il comando seguente, ad esempio, salva i processi nella variabile 
    $p e quindi utilizza un operatore pipeline (|) per inviare i 
    processi in $p al comando Format-Table. Il comando utilizza il 
    parametro Property di Format-Table per includere la proprietà 
    MachineName nella visualizzazione.


        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

    
    Il comando più complesso seguente aggiunge la proprietà 
    MachineName alla visualizzazione del processo predefinita. 
    Utilizza tabelle hash per specificare le proprietà calcolate. 
    Fortunatamente, non è necessario comprenderlo per utilizzarlo. 
    Notare che il carattere apice inverso [`] è il carattere di 
    continuazione.

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

        C:\PS> $p | format-table -property Handles, `
                    @{Label="NPM(K)";Expression={[int]($_.NPM/1024)}}, ` 
                    @{Label="PM(K)";Expression={[int]($_.PM/1024)}}, ` 
                    @{Label="WS(K)";Expression={[int]($_.WS/1024)}}, ` 
                    @{Label="VM(M)";Expression={[int]($_.VM/1MB)}}, ` 
                    @{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   


 OGGETTI DESERIALIZZATI
    Quando si eseguono comandi remoti che generano output, l'output 
    del comando viene ritrasmesso attraverso la rete al computer locale. 

    Poiché la maggior parte degli oggetti live Microsoft .NET 
    Framework attivi (ad esempio gli oggetti restituiti dai cmdlet di 
    Windows PowerShell) non possono essere trasmessi tramite la rete, 
    gli oggetti attivi sono "serializzati". In altre parole, gli 
    oggetti attivi sono convertiti in rappresentazioni XML 
    dell'oggetto e delle relative proprietà. Quindi, l'oggetto 
    serializzato basato su XML viene trasmesso tramite la rete. 

    Nel computer locale, Windows PowerShell riceve l'oggetto 
    serializzato basato su XML e lo "deserializza" convertendo 
    l'oggetto basato su XML in un oggetto .NET Framework standard.

    Tuttavia, l'oggetto deserializzato non è un oggetto attivo. È uno 
    snapshot dell'oggetto al momento in cui viene serializzato e 
    include proprietà ma non metodi. È possibile utilizzare e gestire 
    questi oggetti in Windows PowerShell, passarli nelle pipeline, 
    visualizzare le proprietà selezionate e formattandoli.

    La maggior parte gli oggetti deserializzati sono automaticamente 
    formattati per la visualizzazione per voci nei file Types.ps1xml 
    o Format.ps1xml. Tuttavia, il computer locale potrebbe non 
    disporre di file di formattazione per tutti gli oggetti 
    deserializzati generati in un computer remoto. Quando gli oggetti 
    non sono formattati, tutte le proprietà di ogni oggetto vengono 
    visualizzate nella console in un elenco di flusso. 

    Quando gli oggetti non sono formattati automaticamente, è 
    possibile utilizzare i cmdlet di formattazione, ad esempio 
    Format-Table o Format-List, per formattare e visualizzare le 
    proprietà selezionate. In alternativa è possibile utilizzare il 
    cmdlet Out-GridView per visualizzare gli oggetti in una tabella.

    Inoltre, se si esegue un comando in un computer remoto che 
    utilizza cmdlet non presenti nel computer locale, gli oggetti 
    restituiti dal comando potrebbero non essere formattati 
    correttamente poiché non si dispone dei file di formattazione per 
    tali oggetti nel computer. Per ottenere i dati di formattazione 
    da un altro computer, utilizzare i cmdlet Get-FormatData e 
    Export-FormatData. 

    Alcuni tipi di oggetto, ad esempio gli oggetti DirectoryInfo e i 
    GUID, vengono convertiti nuovamente in oggetti attivi quando 
    vengono ricevuti. Per tali oggetti non è necessaria alcuna 
    operazione speciale di gestione o formattazione.  



 ORDINAMENTO DEI RISULTATI
    L'ordine dei nomi dei computer nel parametro ComputerName dei 
    cmdlet determina l'ordine nel quale Windows PowerShell si 
    connette ai computer remoti. Tuttavia, i risultati vengono 
    visualizzati nell'ordine in cui il computer locale li riceve che 
    potrebbe essere un ordine diverso.

    Per modificare l'ordine dei risultati, utilizza il cmdlet 
    Sort-Object. È possibile effettuare l'ordinamento in base alla 
    proprietà PSComputerName o MachineName. È anche possibile 
    effettuare l'ordinamento in base a un'altra proprietà 
    dell'oggetto, in modo che i risultati dei computer diversi siano 
    mischiati.



VEDERE ANCHE
    about_Remote
    Format-Table
    Get-EventLog
    Get-Process
    Get-Service
    Get-WmiObject
    Invoke-Command
    Out-GridView
    Select-Object
    




Argomenti della Guida