• 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。

  • 相关阅读:
    信息学奥赛一本通(C++)在线评测系统——基础(二)基础算法 —— 1312:【例3.4】昆虫繁殖
    信息学奥赛一本通(C++)在线评测系统——基础(二)基础算法 —— 1312:【例3.4】昆虫繁殖
    数数塔 NBUT 1083
    SSLZYC 2576 平台
    SSLZYC 2133 腾讯大战360
    SSLZYC 2575 给出字符串
    SSLZYC 2574 Closest
    SSLZYC 1127 方程的解数
    SSLZYC 1692 魔板
    SSLZYC 1125 集合
  • 原文地址:https://www.cnblogs.com/micro-chen/p/5775683.html
Copyright © 2020-2023  润新知