PowerShell 管道和对象成员

2、1  管道

  在各种现代的shell中,均支持管道的概念。 管道的最大特点就是:  前一个命令的输出作为后一个命令的输入。cmd、bash均支持管道的概念,这里我就不多说了,下面我们说说PS中

管道的概念。

  在PS中,继承了cmd管道符号的表示方法:  |   表管道;但是PS与cmd的管道有本质的区别, cmd中的管道传递的是文本信息,而PS中传递的是对象,因此PS中的管道更加易于使用

和管理。

  例如:   get-location cmdlet命令返回的是一个pathinfo对象,这个对象是一个信息包,信息包中包含了相关的信息。

2、2 对象成员

  基于面向对象的概念,对象具有属性和方法;这些都可以认为是对象的成员, PS对象均具有众多的成员,为了查看这些成员,PS提供了一个获取对象成员的cmdlet: get-member。

我们可以利用get-member获取对象的成员信息。

Exp:


PS C:Usersvol_20120330> get-location | get-member


TypeName: System.Management.Automation.PathInfo

Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property System.String Path {get;}
Provider Property System.Management.Automation.ProviderInfo Provider {...
ProviderPath Property System.String ProviderPath {get;}

  我们可以查看一下get-member支持那些参数:


PS C:Usersvol_20120330> get-help -parameter * get-member

-Force [<SwitchParameter>]
向显示内容中添加固有成员(PSBase、PSAdapted、PSObject、PSTypeNames)以及编译器生成的 get_ 和 set_ 方法。
默认情况下,Get-Member 会在除“Base”和“Adapted”之外的所有视图中获取这些属性,但不会显示它们。

下面的列表描述了使用 Force 参数时添加的属性:

-- PSBase:.NET Framework 对象的原始属性,无任何扩展或改编。这些是为对象类定义的属性并列在 MSDN 中。
-- PSAdapted:在 Windows PowerShell 扩展类型系统中定义的属性和方法。
-- PSExtended:在 Types.ps1xml 文件中添加的或使用 Add-Member cmdlet 添加的属性和方法。
-- PSObject:将基对象转换为 Windows PowerShell PSObject 对象的适配器。
-- PSTypeNames:按专指性顺序描述对象的对象类型的列表。设置对象格式时,Windows PowerShell 会在 Windows Pow
erShell 安装目录 ($pshome) 下的 Format.ps1xml 文件中搜索类型。它将使用找到的第一个类型的格式定义。

是否必需? False
位置? named
默认值
是否接受管道输入? false
是否接受通配符? False

-InputObject <psobject>
指定将检索其成员的对象。

使用 InputObject 参数与通过管道将对象传递到 Get-Member 不同。区别如下:

-- 通过管道将对象集合传递到 Get-Member 时,Get-Member 会获取集合中单个对象的成员,如整数数组中整数的属性。

-- 使用 InputObject 提交对象集合时,Get-Member 会获取集合的成员,如整数数组中数组的属性。

是否必需? False
位置? named
默认值
是否接受管道输入? true (ByValue)
是否接受通配符? False

-MemberType <PSMemberTypes>
仅获取具有指定成员类型的成员。默认值为 All。

此参数的有效值为:

-- AliasProperty:一种可为现有属性定义新名称的属性。
-- CodeMethod:一种可引用 .NET Framework 类的静态方法的方法。
-- CodeProperty:一种可引用 .NET Framework 类的静态属性的属性。
-- Event:指示对象将发送消息来指示某项操作或状态更改。
-- MemberSet:属性和方法的预定义集合,如 PSBase、PSObject 和 PSTypeNames。
-- Method:基础 .NET Framework 对象的方法。
-- NoteProperty:具有静态值的属性。
-- ParameterizedProperty:具有参数和参数值的属性。
-- Property:基础 .NET Framework 对象的属性。
-- PropertySet:对象属性的预定义集合。
-- ScriptMethod:其值是脚本输出的方法。
-- ScriptProperty:其值是脚本输出的属性。

-- All:获取全部成员类型。
-- Methods:获取对象的所有方法类型(如 Method、CodeMethod、ScriptMethod)。
-- Properties:获取对象的所有类型的属性(如 Property、CodeProperty、AliasProperty、ScriptProp
erty)。

并非所有对象都具有成员的全部类型。如果您指定该对象所不具有的成员类型,则 Windows PowerShell 会返回 null 值。

若要获取相关类型的成员(如所有扩展成员),请使用 View 参数。如果将 MemberType 参数与 Static 或 View 参数一起使用,Ge
t-Member 将获取同时属于这两个集合的成员。

是否必需? False
位置? named
默认值
是否接受管道输入? false
是否接受通配符? False

-Name <string[]>
指定对象的一个或多个属性或方法的名称。Get-Member 仅获取指定的属性和方法。

如果将 Name 参数与 MemberType、View 或 Static 参数一起使用,Get-Member 将仅获取满足所有参数条件的成员。

若要根据名称获取静态成员,请将 Static 参数与 Name 参数一起使用。

是否必需? False
位置? 1
默认值
是否接受管道输入? false
是否接受通配符? False

-Static [<SwitchParameter>]
仅获取对象的静态属性和方法。

将在对象的类上定义静态属性和方法,而不是在类的任何特定实例上定义。

如果将 Static 参数与 View 参数一起使用,将忽略 View 参数。如果将 Static 参数与 MemberType 参数一起使用,Get
-Member 将仅获取同时属于这两个集合的成员。

是否必需? False
位置? named
默认值
是否接受管道输入? false
是否接受通配符? False

-View <PSMemberViewTypes>
仅获取特定类型的成员(属性和方法)。指定一个或多个值。默认值是“Adapted, Extended”。

有效值包括:
-- Base:仅获取 .NET Framework 对象的原始属性和方法(无任何扩展或改编)。
-- Adapted:仅获取 Windows PowerShell 扩展类型系统中定义的属性和方法。
-- Extended:仅获取在 Types.ps1xml 文件中添加的或使用 Add-Member cmdlet 添加的属性和方法。
-- All:获取 Base、Adapted 和 Extended 视图中的成员。

View 参数确定检索到的成员,而不只是这些成员的显示方式。

若要获取特定成员类型(如脚本属性),请使用 MemberType 参数。如果在同一命令中使用 MemberType 和 View 参数,Get-Mem
ber 将获取同时属于这两个集合的成员。如果在同一命令中使用 Static 和 View 参数,将忽略 View 参数。

是否必需? False
位置? named
默认值
是否接受管道输入? false
是否接受通配符? False

  可以发现get-member cmdlet支持:force、inputobject、membertype、name、static、view这些参数。 下面我们简要的利用一下这些参数

Exp:获取对象的静态方法和属性


PS C:Usersvol_20120330> get-location | get-member -static


TypeName: System.Management.Automation.PathInfo

Name MemberType Definition
---- ---------- ----------
Equals Method static bool Equals(System.Object objA, System.Obj...
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, S...

Exp: 获取对象的属性


PS C:Usersvol_20120330> get-location | get-member -membertype property


TypeName: System.Management.Automation.PathInfo

Name MemberType Definition
---- ---------- ----------
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property System.String Path {get;}
Provider Property System.Management.Automation.ProviderInfo Provider {...
ProviderPath Property System.String ProviderPath {get;}

Exp:获取对象特定的成员, 湖区.Net Framwork 的原始属性和方法


PS C:Usersvol_20120330> get-location | get-member -view base


TypeName: System.Management.Automation.PathInfo

Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property System.String Path {get;}
Provider Property System.Management.Automation.ProviderInfo Provider {...
ProviderPath Property System.String ProviderPath {get;}

三、格式化输出

  前面的文章中提到过部分关于格式化的内容,这里进一步进行介绍。

  PS支持4个格式化cmdlet:  format-wide、 format-list、format-table、format-custom; 这里仅介绍前面三个。

  四个命令均需要管道输出对象作为输入;四个cmdlet均有默认的输出属性,如果不进行指定,则输出默认的属性。

3、1  format-wide  

  格式化命令默认输出不同数量的属性,format-wide默认仅输出一个默认属性。

Exp:


PS C:Usersvol_20120330> get-command | format-wide


% ?
A: ac
Add-Computer Add-Content
Add-History Add-Member
Add-PSSnapin Add-Type
asnp B:
C: cat
cd cd..
cd chdir
Checkpoint-Computer clc
clear Clear-Content
Clear-EventLog Clear-History
Clear-Host Clear-Item
Clear-ItemProperty Clear-Variable
clhy cli
clp cls
clv compare
Compare-Object Complete-Transaction
Connect-WSMan ConvertFrom-Csv
ConvertFrom-SecureString ConvertFrom-StringData
Convert-Path ConvertTo-Csv
ConvertTo-Html ConvertTo-SecureString
ConvertTo-Xml copy
Copy-Item Copy-ItemProperty
cp cpi
cpp cvpa
D: dbp
Debug-Process del
diff dir
Disable-ComputerRestore Disable-PSBreakpoint
Disable-PSRemoting Disable-PSSessionConfiguration
Disable-WSManCredSSP Disconnect-WSMan
E: ebp
echo Enable-ComputerRestore
Enable-PSBreakpoint Enable-PSRemoting
Enable-PSSessionConfiguration Enable-WSManCredSSP
Enter-PSSession epal
epcsv epsn
erase etsn
Exit-PSSession Export-Alias
Export-Clixml Export-Console
Export-Counter Export-Csv
Export-FormatData Export-ModuleMember
Export-PSSession exsn
F: fc
fl foreach
ForEach-Object Format-Custom
Format-List Format-Table
Format-Wide ft
fw G:
gal gbp
gc gci
gcm gcs
gdr Get-Acl
Get-Alias Get-AuthenticodeSignature
Get-ChildItem Get-Command
Get-ComputerRestorePoint Get-Content
Get-Counter Get-Credential
Get-Culture Get-Date
Get-Event Get-EventLog
Get-EventSubscriber Get-ExecutionPolicy
Get-FormatData Get-Help
Get-History Get-Host
Get-HotFix Get-Item
Get-ItemProperty Get-Job
Get-Location Get-Member
Get-Module Get-PfxCertificate
Get-Process Get-PSBreakpoint
Get-PSCallStack Get-PSDrive
Get-PSProvider Get-PSSession
Get-PSSessionConfiguration Get-PSSnapin
Get-Random Get-Service
Get-TraceSource Get-Transaction
Get-UICulture Get-Unique
Get-Variable Get-Verb
Get-WinEvent Get-WmiObject
Get-WSManCredSSP Get-WSManInstance
ghy gi
gjb gl
gm gmo
gp gps
group Group-Object
gsn gsnp
gsv gu
gv gwmi
h H:
help history
I: icm
iex ihy
ii Import-Alias
Import-Clixml Import-Counter
Import-Csv Import-LocalizedData
Import-Module Import-PSSession
ImportSystemModules Invoke-Command
Invoke-Expression Invoke-History
Invoke-Item Invoke-WmiMethod
Invoke-WSManAction ipal
ipcsv ipmo
ipsn ise
iwmi J:
Join-Path K:
kill L:
Limit-EventLog lp
ls M:
man md
measure Measure-Command
Measure-Object mi
mkdir more
mount move
Move-Item Move-ItemProperty
mp mv
N: nal
ndr New-Alias
New-Event New-EventLog
New-Item New-ItemProperty
New-Module New-ModuleManifest
New-Object New-PSDrive
New-PSSession New-PSSessionOption
New-Service New-TimeSpan
New-Variable New-WebServiceProxy
New-WSManInstance New-WSManSessionOption
ni nmo
nsn nv
O: ogv
oh Out-Default
Out-File Out-GridView
Out-Host Out-Null
Out-Printer Out-String
P: popd
Pop-Location prompt
ps psEdit
pushd Push-Location
pwd Q:
r R:
rbp rcjb
rd rdr
Read-Host Receive-Job
Register-EngineEvent Register-ObjectEvent
Register-PSSessionConfiguration Register-WmiEvent
Remove-Computer Remove-Event
Remove-EventLog Remove-Item
Remove-ItemProperty Remove-Job
Remove-Module Remove-PSBreakpoint
Remove-PSDrive Remove-PSSession
Remove-PSSnapin Remove-Variable
Remove-WmiObject Remove-WSManInstance
ren Rename-Item
Rename-ItemProperty Reset-ComputerMachinePassword
Resolve-Path Restart-Computer
Restart-Service Restore-Computer
Resume-Service ri
rjb rm
rmdir rmo
rni rnp
rp rsn
rsnp rv
rvpa rwmi
S: sajb
sal saps
sasv sbp
sc select
Select-Object Select-String
Select-Xml Send-MailMessage
set Set-Acl
Set-Alias Set-AuthenticodeSignature
Set-Content Set-Date
Set-ExecutionPolicy Set-Item
Set-ItemProperty Set-Location
Set-PSBreakpoint Set-PSDebug
Set-PSSessionConfiguration Set-Service
Set-StrictMode Set-TraceSource
Set-Variable Set-WmiInstance
Set-WSManInstance Set-WSManQuickConfig
Show-EventLog si
sl sleep
sort Sort-Object
sp spjb
Split-Path spps
spsv start
Start-Job Start-Process
Start-Service Start-Sleep
Start-Transaction Start-Transcript
Stop-Computer Stop-Job
Stop-Process Stop-Service
Stop-Transcript Suspend-Service
sv swmi
T: TabExpansion
tee Tee-Object
Test-ComputerSecureChannel Test-Connection
Test-ModuleManifest Test-Path
Test-WSMan Trace-Command
type U:
Undo-Transaction Unregister-Event
Unregister-PSSessionConfiguration Update-FormatData
Update-List Update-TypeData
Use-Transaction V:
W: Wait-Event
Wait-Job Wait-Process
where Where-Object
wjb write
Write-Debug Write-Error
Write-EventLog Write-Host
Write-Output Write-Progress
Write-Verbose Write-Warning
X: Y:
Z:

   这里我们发现,format-wide仅输出了name项。那么我们如果要输出别的项怎么办呢? 此时可以利用format-wide的 -property。

Exp: 利用format-wide 的property参数输出comandtype信息。


PS C:Usersvol_20120330> get-command | format-wide -property commandtype


Alias Alias
Function Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Function
Function Alias
Alias Function
Function Alias
Cmdlet Alias
Alias Cmdlet
Cmdlet Cmdlet
Function Cmdlet
Cmdlet Cmdlet
Alias Alias
Alias Alias
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Cmdlet Cmdlet
Alias Alias
Alias Alias
Function Alias
Cmdlet Alias
Alias Alias
Cmdlet Cmdlet
Function Cmdlet
Cmdlet Cmdlet
Function Alias
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Alias Alias
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Function Alias
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Alias Function
Alias Alias
Alias Alias
Alias Alias
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Function
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Alias
Alias Alias
Alias Alias
Alias Alias
Alias Cmdlet
Alias Alias
Alias Alias
Alias Alias
Alias Function
Function Alias
Function Alias
Alias Alias
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Function Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Alias Alias
Alias Alias
Alias Function
Cmdlet Function
Alias Function
Cmdlet Alias
Alias Function
Alias Alias
Alias Cmdlet
Cmdlet Alias
Function Function
Alias Alias
Cmdlet Cmdlet
Alias Alias
Function Alias
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Alias
Alias Alias
Function Alias
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Function Alias
Cmdlet Function
Alias Function
Alias Cmdlet
Alias Function
Alias Function
Alias Alias
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Alias Alias
Alias Alias
Alias Alias
Alias Alias
Alias Alias
Alias Alias
Function Alias
Alias Alias
Alias Alias
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Alias
Alias Alias
Alias Cmdlet
Alias Alias
Cmdlet Alias
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Alias
Function Function
Alias Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Alias Function
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Function
Function Cmdlet
Cmdlet Cmdlet
Alias Cmdlet
Alias Alias
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Cmdlet Cmdlet
Function Function
Function

  我们还可以对format-wide的输出格式进一步进行格式化,可以指定输出的列数。

Exp: 通过colum参数指定输出的列数


PS C:Usersvol_20120330> get-command | format-wide -property commandtype -colum 6


Alias Alias Function Alias Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Alias Function
Function Alias Alias Function Function Alias
Cmdlet Alias Alias Cmdlet Cmdlet Cmdlet
Function Cmdlet Cmdlet Cmdlet Alias Alias
Alias Alias Alias Alias Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Alias Cmdlet Cmdlet
Alias Alias Alias Alias Function Alias
Cmdlet Alias Alias Alias Cmdlet Cmdlet
Function Cmdlet Cmdlet Cmdlet Function Alias
Alias Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Alias Alias Alias Alias Alias
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Alias Function Alias
Alias Alias Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Alias Alias Function Alias Alias
Alias Alias Alias Alias Alias Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Function
Cmdlet Cmdlet Cmdlet Cmdlet Alias Alias
Alias Alias Alias Alias Alias Alias
Alias Cmdlet Alias Alias Alias Alias
Alias Alias Alias Function Function Alias
Function Alias Alias Alias Alias Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Function Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Alias Alias Alias Alias Alias
Alias Function Cmdlet Function Alias Function
Cmdlet Alias Alias Function Alias Alias
Alias Cmdlet Cmdlet Alias Function Function
Alias Alias Cmdlet Cmdlet Alias Alias
Function Alias Alias Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Alias Alias Alias Alias
Function Alias Alias Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Function Alias
Cmdlet Function Alias Function Alias Cmdlet
Alias Function Alias Function Alias Alias
Alias Alias Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Alias Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Alias Alias Alias Alias Alias
Alias Alias Alias Alias Alias Alias
Alias Alias Function Alias Alias Alias
Alias Alias Alias Alias Cmdlet Cmdlet
Cmdlet Cmdlet Alias Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Alias
Alias Alias Alias Cmdlet Alias Alias
Cmdlet Alias Alias Alias Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Alias Alias
Function Function Alias Cmdlet Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Alias Function
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Cmdlet Function Function Cmdlet Cmdlet Cmdlet
Alias Cmdlet Alias Alias Cmdlet Cmdlet
Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet
Function Function Function

3、2 format-list

  format-list以列表的形式输出信息,这里主要介绍两个特点

3、2、1  format-list的 property参数可以指定输出的属性多少

Exp:


PS C:Usersvol_20120330> get-location | format-list


Drive : C
Provider : Microsoft.PowerShell.CoreFileSystem
ProviderPath : C:Usersvol_20120330
Path : C:Usersvol_20120330

Exp:  通过property参数仅输出path属性

PS C:Usersvol_20120330> get-location | format-list -property path


Path : C:Usersvol_20120330
3、2、2  利用 * 输出所有属性


PS C:Usersvol_20120330> get-location | format-list -property *


Drive : C
Provider : Microsoft.PowerShell.CoreFileSystem
ProviderPath : C:Usersvol_20120330
Path : C:Usersvol_20120330


 

3、3  format-table

  format-table以表格的形式输出信息。

Exp:利用format-table格式化输出当前路径信息

PS C:Usersvol_20120330> get-location | format-table

Path
----
C:Usersvol_20120330
  乍一看,这个输出的信息量减少了, 其实这都是默认输出属性的原因,我们可以通过参数来控制输出。

Exp:


____________________________________________________________________________
PS C:Usersvol_20120330> get-process | format-table

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
117 5 4924 1540 111 0.02 2900 acrotray
131 5 15904 7696 45 1036 audiodg
185 9 11704 3036 119 1580 BSQLServer
135 11 35580 14872 155 13.88 3780 chrome
910 26 52736 85220 313 268.93 4316 chrome
139 21 195280 162376 307 251.61 4500 chrome
176 8 7316 3900 166 20.76 4772 chrome
158 16 94648 71892 213 104.15 4948 chrome
730 17 80972 42784 320 89.81 5760 chrome
122 5 3436 2244 122 0.12 2824 conhost
533 6 1408 1208 69 432 csrss
552 11 2292 9128 227 516 csrss
126 8 32976 17836 119 271.49 2628 dwm
170 9 5304 5260 139 0.94 2916 egui
382 15 74732 54832 172 1732 ekrn
780 39 31624 15112 263 31.54 2668 explorer
247 12 44640 25340 219 275.76 820 Foxit Reader
0 0 0 24 0 0 Idle
444 25 23444 16692 253 102.46 3848 iku
489 53 36164 29580 210 117.62 4016 ikuacc
328 14 8760 6084 197 0.51 3868 ikucmc
764 14 3400 3816 34 616 lsass
144 4 1516 1636 18 624 lsm
464 24 164724 130944 471 296.96 6084 powershell_ise
150 6 11892 3804 119 5604 PresentationFontCache
818 28 102380 28340 341 672.15 5944 QQPlayer
127 7 6732 2564 134 0.58 3456 rundll32
666 19 29068 17500 129 3656 SearchIndexer
269 9 5308 3900 44 564 services
33 1 316 300 4 328 smss
153 6 3268 3820 68 0.34 2952 SogouCloud
322 11 5160 3128 75 1412 spoolsv
381 15 44840 2944 1524 1808 sqlservr
87 4 1460 1452 30 1892 sqlwriter
374 7 3060 3224 43 732 svchost
339 10 3364 3156 31 812 svchost
512 13 14608 8320 63 904 svchost
718 20 50532 45520 135 936 svchost
1274 31 19076 14960 146 964 svchost
286 10 3636 2744 34 1112 svchost
463 17 11640 5816 68 1252 svchost
322 25 9780 5032 51 1500 svchost
105 4 1416 1388 29 1932 svchost
128 8 1904 1416 29 2300 svchost
236 12 3552 3188 66 2640 svchost
332 19 77552 8588 145 3088 svchost
218 8 11844 4432 133 58.50 2880 SynTPEnh
101 4 2504 1300 106 3572 SynTPHelper
125 5 5136 1268 110 0.05 3252 SynTPLpr
627 0 48 364 2 4 System
131 5 3004 7164 108 3840 taskeng
255 10 8252 3152 128 0.39 2788 taskhost
170 8 4720 9868 71 5156 taskhost
83 5 1140 1212 43 508 wininit
116 4 2216 1164 49 596 winlogon
216 7 9156 14044 66 1900 WmiPrvSE
447 26 7680 7144 123 2064 wmpnetwk
198 5 1536 1408 34 2344 WUDFHost

3、3、1 利用property参数控制输出的属性

Exp:


PS C:Usersvol_20120330> get-process | format-table -property path,cpu,id,pm

Path CPU Id PM
---- --- -- --
C:Program Files... 0.0156001 2900 5042176
1036 16285696
1580 11984896
C:Usersvol_201... 13.884089 3780 36433920
C:Usersvol_201... 270.6929352 4316 54067200
C:Usersvol_201... 256.1068417 4500 181755904
C:Usersvol_201... 20.9821345 4772 7495680
C:Usersvol_201... 104.8794723 4948 95870976
C:Usersvol_201... 89.9189764 5760 82915328
C:Windowssyste... 0.1248008 2824 3518464
432 1441792
516 2347008
C:Windowssyste... 272.8145488 2628 33767424
C:Program Files... 0.936006 2916 5431296
1732 76525568
C:WindowsExplo... 31.6994032 2668 32452608
C:Program Files... 275.7629677 820 45711360
0 0
C:Program Files... 102.7734588 3848 24023040
C:Program Files... 118.2799582 4016 37036032
C:Program Files... 0.5148033 3868 8970240
616 3481600
624 1597440
C:Windowssyste... 305.0755556 6084 169136128
5604 12177408
C:Program Files... 676.9351393 5944 104837120
C:Windowssyste... 0.5772037 3456 6893568
3656 29736960
564 5378048
328 323584
C:Program Files... 0.3432022 2952 3346432
1412 5283840
1808 45916160
1892 1495040
732 3133440
812 3444736
904 14987264
936 52178944
964 19533824
1112 3723264
1252 11919360
1500 10014720
1932 1449984
2300 1949696
2640 3493888
3088 79384576
C:Program Files... 59.4207809 2880 12128256
3572 2564096
C:Program Files... 0.0468003 3252 5259264
4 49152
3840 3076096
C:Windowssyste... 0.3900025 2788 8450048
5156 4833280
508 1167360
596 2269184
1900 9375744
2064 7884800
2344 1572864

________________________

  可以发现通过使用property参数,可以输出默认没有的path属性,同时将其他一些属性忽略了。我们还发现path属性输出的时候么有完整的信息,

这样不利于我们查看,有没有办法全部将其输出呢? 答案是:有,通过Autosize参数就可以实现。

3、3、2  autosize参数

Exp:利用autosize参数将path属性完整输出


PS C:Usersvol_20120330> get-process | format-table -property path,cpu,id,pm -autosize

警告: 2 个列无法显示,已被删除。

Path CPU
---- ---
C:Program FilesAdobeAcrobat 9.0Acrobatacrotray.exe ...001


C:Usersvol_20120330AppDataLocalGoogleChromeApplicationchrome.exe ...902
C:Usersvol_20120330AppDataLocalGoogleChromeApplicationchrome.exe ...647
C:Usersvol_20120330AppDataLocalGoogleChromeApplicationchrome.exe ...199
C:Usersvol_20120330AppDataLocalGoogleChromeApplicationchrome.exe ...352
C:Usersvol_20120330AppDataLocalGoogleChromeApplicationchrome.exe ...845
C:Usersvol_20120330AppDataLocalGoogleChromeApplicationchrome.exe ...774
C:Windowssystem32conhost.exe ...008


C:Windowssystem32Dwm.exe ...648
C:Program FilesESETESET Smart Securityegui.exe ...006

C:WindowsExplorer.EXE ...047
C:Program FilesFoxit SoftwareFoxit ReaderFoxit Reader.exe ...677

C:Program FilesYouKuiku2iku.exe ...612
C:Program FilesYouKucommonikuacc.exe ...649
C:Program FilesYouKucommonikucmc.exe ...033


C:Windowssystem32WindowsPowerShellv1.0PowerShell_ISE.exe ...806

C:Program FilesTencentQQPlayerQQPlayer.exe ...942
C:Windowssystem32 undll32.exe ...037



C:Program FilesSogouInput6.1.0.6700SogouCloud.exe ...022















C:Program FilesSynapticsSynTPSynTPEnh.exe ...899

C:Program FilesSynapticsSynTPSynTPLpr.exe ...003

C:Windowssystem32 askhost.exe

  我们发现path完整输出了,但是其他的信息就被忽略了,PS默认最前输出的列最重要,而后面输出的相对不重要,当不能完整输出的时候,就将不重要的信息省略。

3、3、3  wrap参数

  wrap参数用来将输出信息换行输出。


PS C:Usersvol_20120330> get-process | format-table -property cpu,id,pm,path -wrap

CPU Id PM Path
--- -- -- ----
0.0156001 2900 5042176 C:Program FilesAd
obeAcrobat 9.0Acr
obatacrotray.exe
1036 16285696
1580 11984896
14.2740915 3780 36433920 C:Usersvol_201203
30AppDataLocalGo
ogleChromeApplica
tionchrome.exe
284.3430227 4316 54341632 C:Usersvol_201203
30AppDataLocalGo
ogleChromeApplica
tionchrome.exe
280.0841954 4500 240979968 C:Usersvol_201203
30AppDataLocalGo
ogleChromeApplica
tionchrome.exe
21.2785364 4772 7495680 C:Usersvol_201203
30AppDataLocalGo
ogleChromeApplica
tionchrome.exe
107.0790864 4948 96923648 C:Usersvol_201203
30AppDataLocalGo
ogleChromeApplica
tionchrome.exe
90.2153783 5760 82915328 C:Usersvol_201203
30AppDataLocalGo
ogleChromeApplica
tionchrome.exe
0.1248008 2824 3518464 C:Windowssystem32
conhost.exe
432 1441792
516 2351104
277.7129802 2628 33771520 C:Windowssystem32
Dwm.exe
0.936006 2916 5431296 C:Program FilesES
ETESET Smart Secur
ityegui.exe
1732 76525568
32.136206 2668 32382976 C:WindowsExplorer
.EXE
275.7785678 820 45711360 C:Program FilesFo
xit SoftwareFoxit
ReaderFoxit Reader
.exe
0 0
103.9746665 3848 24006656 C:Program FilesYo
uKuiku2iku.exe
121.1035763 4016 32854016 C:Program FilesYo
uKucommonikuacc.e
xe
0.5148033 3868 8970240 C:Program FilesYo
uKucommonikucmc.e
xe
616 3481600
624 1552384
318.6320425 6084 169525248 C:Windowssystem32
WindowsPowerShell
v1.0PowerShell_ISE
.exe
5604 12177408
696.0452618 5944 105066496 C:Program FilesTe
ncentQQPlayerQQPl
ayer.exe
0.5772037 3456 6893568 C:Windowssystem32
undll32.exe
3656 27095040
564 5406720
328 323584
0.3588023 2952 3346432 C:Program FilesSo
gouInput6.1.0.6700
SogouCloud.exe
1412 5283840
1808 45916160
1892 1495040
732 3133440
812 3416064
904 14987264
936 52178944
964 19566592
1112 3723264
1252 11919360
1500 10014720
1932 1449984
2300 1949696
2640 3493888
3088 79384576
62.0727979 2880 12128256 C:Program FilesSy
napticsSynTPSynTP
Enh.exe
3572 2564096
0.0468003 3252 5259264 C:Program FilesSy
napticsSynTPSynTP
Lpr.exe
4 49152
0.3900025 2788 8478720 C:Windowssystem32
askhost.exe
508 1167360
596 2269184
1900 9539584
2064 7864320
2344 1572864

  可以发现最后一列path的输出wrap输出了。

3、3、4  groupby参数

  format-table 通过groupby参数还支持分组输出,实现选择功能。这里就不举例了。

4、小结

  可以发现PS的帮助系统功能很强大,而且其管道功能也很强大。

  格式化输出命令基于对象属性,使用最多的参数是property。

原文地址:https://www.cnblogs.com/micro-chen/p/5775683.html