zoukankan      html  css  js  c++  java
  • Char 08 对象: 数据的另一个名称

    1  对象:

      Get-Process | ConvertTo-HTML

      PowerShell 中的 4 个术语:

      1)  对象 : 【表行】,代表单个事物,比如:单个进程,单个服务

      2)  属性 : 【表列】,代表对象的部分信息,比如 进程名称,Process ID

      3)  方法 : 【行为】 ,方法与某个对象关联,并使得对象完成某些任务,比如杀死进程

      4)  集合 : 【整个对象的集合】,【表】

    2  为什么 PowerShell 使用对象

      为何 要使用 对象来代替数据???

      原因:

      1)  Windows 本身就是一个面向对象的 OS

      2)  会使事情比较简单,并给你 提供强大的功能和更好的灵活性

          PowerShell 使用对象消除消除所有的文本操作开销,由于对象的工作机制类似于 内存中的表,因此无需告知PowerShell 信息所在的文本位置

    3  探索对象 : Get-Member | gm

        gm : 可以完整访问进程对象的属性和方法, 这是由于该命令还未被过滤用于显示

        gm : 会查看每一个对象并构建一个包含对象属性和方法的列表

    PS D:	est_powershell> Get-Process | gm
    
    
       TypeName:System.Diagnostics.Process
    
    Name                       MemberType     Definition                                                                                                                                                   
    ----                       ----------     ----------                                                                                                                                                   
    Handles                    AliasProperty  Handles = Handlecount                                                                                                                                        
    Name                       AliasProperty  Name = ProcessName                                                                                                                                           
    NPM                        AliasProperty  NPM = NonpagedSystemMemorySize                                                                                                                               
    PM                         AliasProperty  PM = PagedMemorySize                                                                                                                                         
    VM                         AliasProperty  VM = VirtualMemorySize                                                                                                                                       
    WS                         AliasProperty  WS = WorkingSet                                                                                                                                              
    Disposed                   Event          System.EventHandler Disposed(System.Object, System.EventArgs)                                                                                                
    ErrorDataReceived          Event          System.Diagnostics.DataReceivedEventHandler ErrorDataReceived(System.Object, System.Diagnostics.DataReceivedEventArgs)                                       
    Exited                     Event          System.EventHandler Exited(System.Object, System.EventArgs)                                                                                                  
    OutputDataReceived         Event          System.Diagnostics.DataReceivedEventHandler OutputDataReceived(System.Object, System.Diagnostics.DataReceivedEventArgs)                                      
    BeginErrorReadLine         Method         void BeginErrorReadLine()                                                                                                                                    
    BeginOutputReadLine        Method         void BeginOutputReadLine()                                                                                                                                   
    CancelErrorRead            Method         void CancelErrorRead()                                                                                                                                       
    CancelOutputRead           Method         void CancelOutputRead()                                                                                                                                      
    Close                      Method         void Close()                                                                                                                                                 
    CloseMainWindow            Method         bool CloseMainWindow()                                                                                                                                       
    CreateObjRef               Method         System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)                                                                                              
    Dispose                    Method         void Dispose(), void IDisposable.Dispose()                                                                                                                   
    Equals                     Method         bool Equals(System.Object obj)                                                                                                                               
    GetHashCode                Method         int GetHashCode()                                                                                                                                            
    GetLifetimeService         Method         System.Object GetLifetimeService()                             

      [ Note ] PowerShell 中的 惯例, 使用 单数名词

        一个 对象的属性,方法,以及 附加到 对象的东西, 都被称为 成员

    4  对象标签, 也就是所谓的 “属性”

      有以下几种:

        ScriptProperty 、 NoteProperty 、 AliasProperty 、Property 

      有一个扩展类型系统 ETS,负责添加 后来的属性

      对于 实现 自己的目标,这些属性都是一样的,唯一的不同,就是原本是如何创建出来的

      PowerShell 中的 property 通常是 ,只读的

    5  对象行为, 也就是所谓的 “方法”

      如果 需要 禁止某个 进程,可以 通过 三个方法实现,

        一,获取对象,并执行 kill 方法 , 二,使用一系列的 Cmdlets 

        【原则】 如果 无法使用 Cmdlets 完成,则回头使用 GUI 

        1)  Get-Process -name Notepad | Stop-Process

        2)    Stop-Process -name Notepad

     

    6  排序对象

       PS D: est_powershell> get-process | Sort-Object -Property VM,ID -Descending

    7  选择所需的属性

       

      Select-Object 还拥有 -First / -Last 参数,这两个参数,可以保留管道中 对象的子集,但不能加 过滤条件

      

    PS D:	est_powershell> Get-Process | select Name , ID , VM ,PM -First 10
    
    Name                                                                                                 Id                                                  VM                                                  PM
    ----                                                                                                 --                                                  --                                                  --
    AcroRd32                                                                                           3864                                           272265216                                            60690432
    AcroRd32                                                                                           8344                                           157577216                                            12959744
    armsvc                                                                                             1908                                            45125632                                             1712128
    arr_isrv                                                                                           1740                                            84357120                                             2969600
    arr_srvs                                                                                           1932                                            73564160                                             2371584
    atieclxx                                                                                           3492                                            77225984                                             2891776
    atiesrxx                                                                                            944                                            30900224                                             2174976
    CcmExec                                                                                            2372                                           253988864                                            48713728
    chrome                                                                                              872                                           683159552                                           125206528
    chrome                                                                                             3264                                            77602816                                             2445312
    
    
    
    PS D:	est_powershell> 

      【Note】

        Select-Object  : 用于选择所需的属性【或列】,还可以选择输出行的任意子集 【使用 -First && -Last】

        Where-Object : 基于 筛选条件从管道中移除或者过滤对象

     

    8  在 命令 结束之前总是以对象的形式

      PowerShell 管道在最后一个命令 ,执行之前,总是传递对象,在最后一个命令执行时, PowerShell将会 查看 管道中所包含的对象,并根据不同的配置文件,决定那一个属性被用于构建展示在屏幕的最终结果 ,

        它 还会基于一些内部规则和配置文件确定展示是 表 还是 列表

      可以使用 gm 查看管道中不同的对象,【Note】 可以在任何产生输出结果的Cmdlet 之后,使用Gm 

        PS D: est_powershell> get-Process | sort VM -Descending | gm

        【NOTE】 可以 通过在 管道中 对 Gm 的 输出结果 再次 使用 Gm 命令证明

        

    PS D:	est_powershell> Get-Process | gm  | gm
    
    
       TypeName:Microsoft.PowerShell.Commands.MemberDefinition
    
    Name        MemberType Definition                                                  
    ----        ---------- ----------                                                  
    Equals      Method     bool Equals(System.Object obj)                              
    GetHashCode Method     int GetHashCode()                                           
    GetType     Method     type GetType()                                              
    ToString    Method     string ToString()                                           
    Definition  Property   string Definition {get;}                                    
    MemberType  Property   System.Management.Automation.PSMemberTypes MemberType {get;}
    Name        Property   string Name {get;}                                          
    TypeName    Property   string TypeName {get;}                                      

    9  常见误区

      1)  PowerShell 的帮助文档不 包括有关对象属性的信息, 必须 将对象利用管道 传递给 Gm[ Get-Memeber] 来查看属性列表

      2)  可以在 产生结果的任意管道末尾添加 Gm, 如果不产生结果 加 Gm 也不会产生结果

      3)  请注意输入的整洁性, | 两边,需要空格

      4)  管道在不同阶段可以包含不同类型的 对象

  • 相关阅读:
    Fiddler 只看指定URL请求
    WTM框之—调整默认的删除方法
    WTM框之—调整grid的每页显示行数
    WTM框之—数据列表上添加按钮的学习记录
    Armbian欢迎信息系统状态脚本
    Shell中的${xxx%% *}字符串分割方法
    强制SSH使用密钥认证禁止密码登录
    Linux开机自动挂载外接存储
    mysql实现name姓名多个相同的数据只取一条
    git 常用命令备忘录
  • 原文地址:https://www.cnblogs.com/Nancy0401/p/5600885.html
Copyright © 2011-2022 走看看