当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于远程输出

作者:精品下载站 日期:2024-12-14 02:19:10 浏览:15 分类:玩电脑

关于远程输出


简短描述

描述如何解释和格式化远程命令的输出。

详细描述

在远程计算机上运行的命令的输出可能看起来与在本地计算机上运行的同一命令的输出相似,但存在一些显着差异。

本主题说明如何解释、格式化和显示在远程计算机上运行的命令的输出。

显示计算机名称

当您使用 Invoke-Command cmdlet 在远程计算机上运行命令时,该命令会返回一个对象,其中包含生成数据的计算机的名称。 PSComputerName 属性包含远程计算机名称。

对于许多命令,默认情况下会显示 PSComputerName。例如,以下命令在两台远程计算机 Server01 和 Server02 上运行 Get-Culture 命令。下面显示的输出包括运行该命令的远程计算机的名称。

Invoke-Command -ScriptBlock {Get-Culture} -ComputerName Server01, Server02
LCID  Name    DisplayName                PSComputerName
----  ----    -----------                --------------
1033  en-US   English (United States)    Server01
1033  es-AR   Spanish (Argentina)        Server02

您可以使用 Invoke-CommandHideComputerName 参数来隐藏 PSComputerName 属性。此参数专为仅从一台远程计算机收集数据的命令而设计。

以下命令在 Server01 远程计算机上运行 Get-Culture 命令。它使用 HideComputerName 参数来隐藏 PSComputerName 属性及相关属性。

$invokeCommandSplat = @{
    ScriptBlock = {Get-Culture}
    ComputerName = 'Server01'
    HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

如果默认情况下不显示,您还可以显示 PSComputerName 属性。

例如,以下命令使用 Format-Table cmdlet 将 PSComputerName 属性添加到远程 Get-Date 命令的输出。

$invokeCommandSplat = @{
    ScriptBlock = {Get-Date}
    ComputerName = 'Server01', 'Server02'
}
Invoke-Command @invokeCommandSplat |
    Format-Table DateTime, PSComputerName -AutoSize
DateTime                            PSComputerName
--------                            --------------
Monday, July 21, 2008 7:16:58 PM    Server01
Monday, July 21, 2008 7:16:58 PM    Server02

反序列化对象

当您运行生成输出的远程命令时,命令输出将通过网络传输回本地计算机。

由于实时 .NET 对象无法通过网络传输,因此实时对象会被序列化或转换为对象及其属性的 XML 表示形式。 PowerShell 通过网络传输序列化对象。

在本地计算机上,PowerShell 接收序列化对象并通过将序列化对象转换为标准 .NET 对象来反序列化它。

但是,反序列化的对象不是活动对象。它是序列化时对象的快照。反序列化的对象包含属性但不包含方法。您可以在 PowerShell 中使用和管理这些对象,包括在管道中传递它们、显示选定的属性以及设置它们的格式。

大多数反序列化对象会自动格式化以通过 Types.ps1xmlFormat.ps1xml 文件中的条目进行显示。但是,本地计算机可能没有远程计算机上生成的所有对象的格式化文件。当对象未格式化时,每个对象的所有属性都会显示在控制台中的流列表中。

当对象未自动格式化时,您可以使用格式化 cmdlet(例如 Format-TableFormat-List)来格式化和显示所选属性。或者,您可以使用 Out-GridView cmdlet 在表中显示对象。

当您在远程计算机上运行使用本地计算机上没有的 cmdlet 的命令时,如果您的计算机上没有这些对象类型的格式化文件,则该命令返回的对象可能不会按预期格式化。电脑。您可以使用 Get-FormatDataExport-FormatData cmdlet 从另一台计算机获取格式化数据。

某些对象类型(例如 DirectoryInfo 对象和 GUID)在收到时会转换回活动对象。这些对象不需要任何特殊处理或格式化。

对结果进行排序

cmdlet 的 ComputerName 参数中计算机名称的顺序决定了 PowerShell 连接到远程计算机的顺序。但是,结果按照从远程计算机接收数据的顺序显示。

您可以使用 Sort-Object cmdlet 对 PSComputerName 上的结果进行排序。当您对象的任何其他属性时,来自不同计算机的结果会在输出中交错分布

参见

  • about_Remote
  • about_Remote_Variables
  • Invoke-Command
  • Get-EventLog
  • Out-GridView
  • Select-Object
  • Get-Process
  • Get-Service
  • Format-Table
  • Get-WmiObject

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯