PowerShell基础教程(12)——处理对象 <o:p></o:p>
我们已经讨论了 Windows PowerShell 如何使用对象在 cmdlet 之间传输数据,并通过使用 Get-Member 和 Format cmdlet 查看对象的特定属性来对查看有关对象详细信息的几种方法进行了说明。
对象的作用是,允许您访问许多复杂的数据,并且它是相关的。通过某些简单的技术,就可以进一步操作对象以进行更多工作。在本章中,我们将讨论可对其进行操作的某些特定对象的类型和操作方法。
获取 WMI 对象 (Get-WmiObject) <o:p></o:p>
获取 WMI 对象 (Get-WmiObject)<o:p></o:p>
Windows Management Instrumentation (WMI) 是 Windows 系统管理的核心技术,因为它可以按统一的方式公开各种类型的信息。由于 WMI 具有如此强大的功能,因此用于访问 WMI 对象的 Windows PowerShell cmdlet,即 Get-WmiObject,为实际工作中最有用的命令之一。我们将讨论如何使用 Get-WmiObject 来访问 WMI 对象,然后讨论如何使用 WMI 对象来执行特定操作。
列出 WMI 类<o:p></o:p>
大多数 WMI 用户遇到的第一个问题是:希望了解利用 WMI 可以执行哪些操作。WMI 类可以描述可管理的资源。系统中存在几百个 WMI 类,其中某些类包含几十个属性。
Get-WmiObject 可以通过将 WMI 成为可发现的类来解决此问题。您可以通过键入以下命令来获取本地计算机中可用的 WMI 类列表:
PS> Get-WmiObject -List<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
__SecurityRelatedClass __NTLMUser9X<o:p></o:p>
__PARAMETERS __SystemSecurity<o:p></o:p>
__NotifyStatus __ExtendedStatus<o:p></o:p>
Win32_PrivilegesStatus Win32_TSNetworkAdapterSettingError<o:p></o:p>
Win32_TSRemoteControlSettingError Win32_TSEnvironmentSettingError<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
通过使用 ComputerName 参数,然后指定计算机名称或 IP 地址,可以从远程计算机中检索相同的信息:
PS> Get-WmiObject -List -ComputerName 192.168.1.29<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
__SystemClass __NAMESPACE<o:p></o:p>
__Provider __Win32Provider<o:p></o:p>
__ProviderRegistration __ObjectProviderRegistration<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
根据该计算机所运行的特定操作系统和由已安装的应用程序所添加的特定 WMI 扩展的不同,远程计算机返回的类列表也各不相同。
<!----><!----><!---->请注意: <o:p></o:p>
在使用 Get-WmiObject 连接到远程计算机时,该远程计算机必须运行 WMI,并且,在默认配置下,您使用的帐户必须是该远程计算机上本地管理员组的成员。远程系统不需要安装 Windows PowerShell。从而,您可以对未运行 Windows PowerShell 但可使用 WMI 的操作系统进行管理。<o:p></o:p>
甚至可在连接到本地系统时包括 ComputerName。可以将本地计算机的名称、其 IP 地址(或环回地址 127.0.0.1)或 WMI 样式‘.’用作计算机名称。如果名为 Admin01(其 IP 地址为 192.168.1.90)的计算机上运行的是 Windows PowerShell,则以下命令将返回该计算机的 WMI 类列表:
Get-WmiObject -List<o:p></o:p>
Get-WmiObject -List -ComputerName .<o:p></o:p>
Get-WmiObject -List -ComputerName Admin01<o:p></o:p>
Get-WmiObject -List -ComputerName 192.168.1.90<o:p></o:p>
Get-WmiObject -List -ComputerName 127.0.0.1<o:p></o:p>
Get-WmiObject -List -ComputerName localhost<o:p></o:p>
|
<o:p> </o:p>
默认情况下,Get-WmiObject 使用 root/cimv2 命名空间。若要指定另一个 WMI 命名空间,请使用 Namespace 参数并指定相应的命名空间路径:
PS> Get-WmiObject -List -ComputerName 192.168.1.29 -Namespace root<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
__SystemClass __NAMESPACE<o:p></o:p>
__Provider __Win32Provider<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
显示 WMI 类详细信息<o:p></o:p>
如果您已经知道 WMI 类的名称,则可立即使用该类来获取信息。例如,常用于检索计算机相关信息的 WMI 类之一就是 Win32_OperatingSystem。
PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
SystemDirectory :C:\WINDOWS\system32<o:p></o:p>
Organization :Global Network Solutions <o:p></o:p>
BuildNumber : 2600<o:p></o:p>
RegisteredUser :Oliver W. Jones<o:p></o:p>
SerialNumber : 12345-678-9012345-67890<o:p></o:p>
Version :5.1.2600<o:p></o:p>
|
<o:p> </o:p>
尽管我们已给出所有参数,但也可采用更简洁的方式来表示命令。在连接到本地系统时,不一定非要使用 ComputerName 参数。介绍该参数的目的是为了对最常见的情况予以说明,并帮助您熟悉此参数。Namespace 默认为 root/cimv2,且可省略。最后,大多数 cmdlet 都允许省略一些常见参数名称。在使用 Get-WmiObject 时,如果没有为第一个参数指定名称,则 Windows PowerShell 会将其视为 Class 参数。这意味着可能已通过键入以下命令发出上一命令:
Get-WmiObject Win32_OperatingSystem<o:p></o:p>
|
<o:p> </o:p>
Win32_OperatingSystem 类所具有的属性数量远远超过此处所显示的属性数量。可以使用 Get-Member 来查看所有属性。就像其他对象属性一样,WMI 类的属性也将自动可用:
PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .| Get-Member -MemberType Property<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
TypeName:System.Management.ManagementObject#root\cimv2\Win32_OperatingSyste<o:p></o:p>
m<o:p></o:p>
<o:p> </o:p>
Name MemberType Definition<o:p></o:p>
---- ---------- ----------<o:p></o:p>
__CLASS Property System.String __CLASS {...<o:p></o:p>
...<o:p></o:p>
BootDevice Property System.String BootDevic...<o:p></o:p>
BuildNumber Property System.String BuildNumb...<o:p></o:p>
...<o:p></o:p>
|
<o:p> </o:p>
使用 Format Cmdlet 显示非默认的属性<o:p></o:p>
若要使用默认情况下不显示的 Win32_OperatingSystem 类中包含的信息,则可通过使用 Format cmdlet 来显示这些信息。例如,如果希望显示可用的内存数据,请键入:
PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .| Format-Table -Property TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles<o:p></o:p>
<o:p> </o:p>
TotalVirtualMemorySize TotalVisibleMem FreePhysicalMem FreeVirtualMemo FreeSpaceInPagi<o:p></o:p>
ory ry ngFiles<o:p></o:p>
--------------- --------------- --------------- --------------- ---------------<o:p></o:p>
2097024 785904 305808 2056724 1558232<o:p></o:p>
|
<o:p> </o:p>
<!----><!----><!---->请注意: <o:p></o:p>
通配符可使用 Format-Table 中的属性名称,因此,最后的管道元素可精简为 Format-Table -Property TotalV*,Free*<o:p></o:p>
<o:p> </o:p>
如果通过键入以下命令将内存数据的格式设置为列表,则将大大提高该内存数据的可读性:
PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .| Format-List TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
TotalVirtualMemorySize : 2097024<o:p></o:p>
TotalVisibleMemorySize : 785904<o:p></o:p>
FreePhysicalMemory : 301876<o:p></o:p>
FreeVirtualMemory : 2056724<o:p></o:p>
FreeSpaceInPagingFiles : 1556644<o:p></o:p>
|
分享到:
相关推荐
PowerShell 不像传统的Cmd.exe或其他Unix外壳程序那样处理文本,而是基于.NET框架,直接处理对象。这意味着PowerShell中的命令可以更深入地访问和操作系统资源,因为它能够直接操纵对象的属性和方法。 2. **丰富的...
【PowerShell基础教程】 PowerShell是一种强大的脚本语言和命令行shell,主要应用于Windows操作系统,如XP、Server 2003、Vista和Server 2008。不同于传统的外壳程序(如Cmd.exe、SH、KSH、CSH和BASH),PowerShell...
更重要的是,PowerShell能够处理对象,而不是仅仅处理文本输出。当你在PowerShell中获取服务信息时,实际上是在操作服务对象,查看其属性(如Name、Status)和调用方法(如启动或停止服务)。每个对象都具有独特的...
传统外壳程序如Cmd.exe、SH、KSH、CSH和BASH通常以文本格式处理命令输出,而PowerShell则处理基于.NET平台的对象,这使得数据处理更为灵活和强大。 PowerShell的核心概念之一是Cmdlet(发音为“command-let”),...
--|PowerShell基础教程 --|WindowsPowerShelluserGuide |powershell 中文教程 --|Windows PowerShell 入门指南.pdf --|Windows PowerShell 入门.pdf --|Windows PowerShell 语言快速参考.rtf |Manning.Windows....
2. **对象管道**: PowerShell的核心是对象管道,它允许用户将命令的输出作为输入传递给下一个命令,类似于Unix的管道,但处理的是对象而非文本。 3. **PowerShell工作区**: 工作区包含了变量、别名、函数等,它们在...
这意味着命令的输出是完整的对象,而不仅仅是文本,这使得数据处理和脚本编写更加灵活。例如,你可以直接对这些对象进行操作,而不是解析文本输出,这极大地提高了效率和易用性。 PowerShell 提供了多个版本,分别...
### PowerShell 教程详解 #### 一、PowerShell 概述与重要性 PowerShell 是一个强大的命令行脚本环境,由微软开发并提供支持,主要用于 Windows 系统的管理和自动化任务处理。自 Exchange Server 2007 和 System ...
### Windows PowerShell 实用教程 #### Windows PowerShell 概览 Windows PowerShell 是由微软开发的一款强大的交互式命令行界面和脚本语言环境,专为系统管理和自动化设计。它首次出现在 Windows XP 和 Windows ...
PowerShell处理的是对象,而非文本字符串。例如,`Get-Process`命令会返回一个包含所有运行进程的对象列表。了解这些对象的属性和方法是掌握PowerShell的关键。 5. **模块与Cmdlets** PowerShell支持模块化,允许...
监控局域网内:共享打印机 获取打印记录、打印人员、打印文件等详细信息。导出为excel表格
Windows PowerShell 是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。 现在win2008,win7都集成了PowerShell,系统不带PowerShell可以...
PowerShell 3.0进阶教程中提到的服务器管理主要围绕以下几个方面: 1. 启用多服务器管理:在Windows Server 2012中,管理员可以启用远程管理功能,从而可以在本地或远程管理服务器。启用远程管理的基本步骤包括打开...
Win7PowerShell使用教程,学习这个脚本还是有好处的,看看吧
7.5.12 ping iphost——验证与远程或本地主机的连接 332 7.5.13 ping loopback——验证与环回地址的连接 332 7.5.14 ping mail——验证与邮件服务器的连接 332 7.5.15 ping news——验证与OE新闻服务器的连接 333 ...
根据提供的文件信息,以下是对标题和描述中所提到知识点的详细说明: Windows PowerShell 3.0 是一个由微软...上述内容构成了PowerShell 3.0教程的基础,适合初学者逐步学习,并为后续更深层次的应用打下坚实的基础。
7.5.12 ping iphost——验证与远程或本地主机的连接 332 7.5.13 ping loopback——验证与环回地址的连接 332 7.5.14 ping mail——验证与邮件服务器的连接 332 7.5.15 ping news——验证与OE新闻服务器的连接 333 ...
非常好用的Powershell教程,共享给大家