zoukankan      html  css  js  c++  java
  • PowerShell_7_零基础自学课程_7_Powershell中重定向机制、目录和文件管理

    星期四和星期五晚上和同事一起到外面烧烤,然后出去喝酒;突然感到自己很孤独,不知道为什么,我不知道为什么这些人这么年轻怎么就么有自己的

    想法,已经做好了混吃等死的地步了;说实话,目前的大型国有企业就是这么一个地方,混吃等死,要不就是削尖脑袋那种刻苦钻营,感觉生活真的很无聊,

    现在明白了一将成名万古枯这句话的真正含义。

      同时突然发现,现在的时间根本不是自己的时间,不知道各位大侠们有没有这种感受.....................

      算了,不牢骚了,还是说说今天的内容吧。

    一、输出重定向

    1、1 兼容cmd重定向

      有过console 模式管理经验的人都知道,几乎所有的console都支持重定向的概念(我目前还没有见过不支持重定向功能的console);例如在cmd中

    可以利用下面的形式实现重定向。

    tasklist > process.txt     #将系统进程信息保存到process.txt中
    
    systeminfo >>process.txt 

      那么在PS中是否也可以这样进行重定向呢? 这个就是可以有。

    Exp:在PS中通过 > 来实现输出重定向

    PS C:\Users\vol_20120330> get-process > process.txt

      可以看到执行过程没有报错,那么我们查看一下是否真的生成了process.txt文件

    复制代码
    PS C:\Users\vol_20120330> ls
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                              
    ----                -------------     ------ ----                              
    ........                                              
    -a---         2012/5/12     16:41      10374 process.txt                       
    .........  
    复制代码

      如上所示,确实生成了process.txt文件。同样我们可以利用 >> appended文件内容。

    Exp:利用 >> 追加信息

    复制代码
    ____________________________________________________________________________
    PS C:\Users\vol_20120330> get-process >> process.txt
    
    ____________________________________________________________________________
    PS C:\Users\vol_20120330> ls
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                              
    ----                -------------     ------ ----                              
     .............                       
    -a---         2012/5/12     16:44      20422 process.txt                                             
    ..................
    ____________________________________________________________________________
    复制代码

      可以看到,文件的内容增加了,这可以通过文件的length属性增大得知。

    1、2 PS新增的特性 out-* cmdlet集重定向

      PS中的out重定向命令集,具有两个特点:

                      1、  这些out-* cmdlets 的输出不是对象,而是文本格式的数据,这是因为out-* cmdlet要将数据传输到接受文本信息的系统组件

                      2、  这些out-* cmdlet 将数据从PS中发送到其他位置,同时在这些命令执行完毕的时候,会将在管道中传输的对象删除

      下面我看来看第二个特性。

    Exp:  利用Format-wide 命令来验证out-* cmdlet的第二个特性

    复制代码
    PS C:\Users\vol_20120330> get-childitem | out-host  |format-wide -column 2
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                                                     
    d-r--         2012/3/30     18:27            Searches                           
    d-r--         2012/3/30     18:27            Videos                             
    -a---         2012/5/12     16:44      20422 process.txt                        
    -a---         2012/4/15     19:14        509 regwizard.log                      
    -a---         2012/4/15     19:14       9853 sanct.log  
    复制代码

      原本我们通过get-childitem命令获取当前目录下的子目录传递给out-host,然后想利用format-wide -column 命令输出2列name属性信息,结果输出了很多列。

    我们变换一下管道传递的先后顺序则会得到:

    复制代码
    PS C:\Users\vol_20120330> get-childitem |format-wide -column 2  | out-host  
    
    
        目录: C:\Users\vol_20120330
    
    
    
    [Contacts]                               [Desktop]                              
    [Documents]                              [Downloads]                            
    [Favorites]                              [Links]                                
    [Music]                                  [Pictures]                             
    [Saved Games]                            [Searches]                             
    [Videos]                                 process.txt                            
    regwizard.log                            sanct.log                              
    复制代码

      可以看到,确实是这样的,out-host命令将在管道中传输的对象删除了。其实质就是当out-* cmdlet执行时,将删除传递给他的对象。

    注意:

      所有的out命令均具有第二个特性,需要注意。

    1、3 Ps中分页输出

      执行某些命令的时候,其输出信息量大,无法在当前页面中完整的显示所有信息,这就需要分页显示;在cmd中又more命令,在bash中也有类似的命令。

    在PS中通过参数来实现这一功能:  -paging。

    Exp: 在PS中利用-paging进行分页输出

      如上图所示,在第一页输出的最底下有相关的提示信息。

      同样利用more函数也可以完成这一功能,因为more函数就一个invoke  out-host -paging的函数。图下图所示:

      如上图所示,在输出窗口的左下角有一个类似于bash中的提示符号: -more-

    1、4 放弃输出

      在cmd利用重定向可以阻止输出信息, 例如:dir>nul; 而在PS中需要进行管道传递,并且使用专门的cmdlet: out-null。

    Exp:  阻止程序输出

    1、5  打印输出

      我们知道在cmd中如果要调用系统的打印功能,那么需要进行很多的操作才能实现,而在PS中只需一个命令即可实现。

    Exp: 利用 out-printer 命令打印输出信息。

      上图就是利用:get-process | out-printer  命令打印输出信息

    1、6 重定向输出到文件

      上面我们说了兼容cmd格式的重定向输出信息到文件,其实在PS中这可以通过专用的cmdlet完成。

    Exp:利用out-file命令将信息输出到文件。

    复制代码
    PS C:\Users\vol_20120330> get-item process.txt
    Get-Item : 找不到路径“C:\Users\vol_20120330\process.txt”,因为该路径不存在。
    所在位置 行:1 字符: 9
    + get-item <<<<  process.txt
        + CategoryInfo          : ObjectNotFound: (C:\Users\vol_20120330\process.tx 
       t:String) [Get-Item], ItemNotFoundException
        + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetIte 
       mCommand
     
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-process | out-file process.txt
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-item process.txt
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     17:25      10346 process.txt                        
    复制代码

      可以看出,上面的   get-process | out-file process.txt 命令确实创建了文件。

      有一点需要注意: out-file命令创建的是Unicode编码的文件,有时候为了输出ASCII编码的文件,我们需要增加-encoding参数, 从而控制输出的文本编码格式

    Exp:利用encoding参数控制编码格式

      get-process | out-file  -encoding ascii -filepath .\process.txt

    复制代码
    PS C:\Users\vol_20120330> get-process | out-file -encoding ascii -filepath .\process1.txt
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-item process1.txt
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     17:31       5254 process1.txt     
    复制代码

      可以发现文件的大小减少了很多,大约只有前面的一半大小,这也符合unicode编码是ascii编码占用空间两倍的常识。

    二、PS中的目录文件管理

      前面的一篇文章我们说了部分在PS中进行文件浏览的基本概念,说到了几个虚拟驱动器的概念。并没有深入的描述相关的命令,这里我们进一步对这一知识点进行描述。

    2.1 管理当前工作路径/位置

      在日常管理中经常需要对当前的路径进行查询和管理;PS提供了四个管理的cmdlet: get-location、set-location、push-location、pop-location。

      get-location: 相当于unix/Linux中的‘pwd’;用于获取当前的工作路径

      set-location: 相当于chdir、cd命令,用于改变当前工作路径

      push-location: 这是PS中新增加的特性, 当用这个命令的时候,PS就会创建一个历史路径堆栈,这个堆栈用来存储push-location的路径信息, push-location用来将路径保存

              到历史路径堆栈。

      pop-location: 用来将当前工作路径切换到历史路径堆栈的最后一条记录中的位置,并且删除最上的一条记录。

    Exp:利用push/pop-loction命令切换工作路径

    复制代码
    PS C:\Users\vol_20120330> push-location -path c:\
    
    _____________________________________________________________________________
    PS C:\> get-location
    
    Path                                                                            
    ----                                                                            
    C:\                                                                             
    
    
    
    _____________________________________________________________________________
    PS C:\> pop-location
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-location
    
    Path                                                                            
    ----                                                                            
    C:\Users\vol_20120330                                                           
    复制代码

      如上所示:  首先用push-location命令保存当前路径并且将当前工作路径切换到C:\ ; 接下来用get-location查看是否切换成功; 然后用pop-location命令切回到原先

    保存的路径,并用get-location验证。

    2、2  获取当前系统支持的驱动器信息

      get-psdrive 命令获取当前系统支持的驱动器。

    Exp: 利用get-psdrive获取当前我的系统上支持的驱动器

    复制代码
    PS C:\Users\vol_20120330> get-psdrive
    
    警告: 列“CurrentLocation”无法显示,已被删除。
    
    Name           Used (GB)     Free (GB) Provider      Root                       
    ----           ---------     --------- --------      ----                       
    Alias                                  Alias                                    
    C                  17.89         11.41 FileSystem    C:\                        
    cert                                   Certificate   \                          
    D                   7.01         22.29 FileSystem    D:\                        
    E                  35.61         22.98 FileSystem    E:\                        
    Env                                    Environment                              
    F                  26.06         32.54 FileSystem    F:\                        
    Function                               Function                                 
    G                  14.95         33.88 FileSystem    G:\                        
    H                  31.67         17.15 FileSystem    H:\                        
    HKCU                                   Registry      HKEY_CURRENT_USER          
    HKLM                                   Registry      HKEY_LOCAL_MACHINE         
    I                                      FileSystem    I:\                        
    K                                      FileSystem    K:\                        
    N                                      FileSystem    N:\                        
    Variable                               Variable                                 
    WSMan                                  WSMan  
    复制代码

      前面简述过get-psdrive命令的psprovider参数,这里不再进行介绍,同时如果需要获取相关信息,可以get-help online一下,可以得到比较详细的信息。

      我们也说过可以利用new-item 命令创建虚拟驱动器;这里我们介绍一个新的命令: new-psdrive。

      new-psdrive常用的参数有: name   用来指定新的驱动器盘符名

                    psprovider   用来指定驱动器的提供程序

                    root   用来指定新驱动器代表的路径

    Exp: 利用new-psdrive命令创建mydirve: 盘符

    复制代码
    PS C:\Users\vol_20120330> new-psdrive -name  mydrive   -psprovider  filesystem  -root $home
    
    警告: 列“CurrentLocation”无法显示,已被删除。
    
    Name           Used (GB)     Free (GB) Provider      Root                       
    ----           ---------     --------- --------      ----                       
    mydrive                          11.40 FileSystem    C:\Users\vol_20120330   
    复制代码

      如实例所示,我们创建了一个盘符:mydrive。我们可以进入盘符进行操作:

    复制代码
    PS C:\Users\vol_20120330> cd mydrive:\
    
    _____________________________________________________________________________
    PS mydrive:\> gl
    
    Path                                                                            
    ----                                                                            
    mydrive:\     
    复制代码

      我们还可以删除当前添加的盘符,这通过remove-psdrive命令实现,见实例。

    Exp: 利用remove-psdrive命令删除刚添加的驱动器盘符。

    复制代码
    PS mydrive:\> remove-psdrive   mydrive
    Remove-PSDrive : 无法删除驱动器“mydrive”,因为它在使用中。
    所在位置 行:1 字符: 15
    + remove-psdrive <<<<    mydrive
        + CategoryInfo          : InvalidOperation: (:) [Remove-PSDrive], PSInvalid 
       OperationException
        + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.Re 
       movePSDriveCommand
     
    
    _____________________________________________________________________________
    PS mydrive:\> cd c:\
    
    _____________________________________________________________________________
    PS C:\> remove-psdrive   mydrive
    
    _____________________________________________________________________________
    PS C:\> cd mydrive:\
    Set-Location : 找不到驱动器。名为“mydrive”的驱动器不存在。
    所在位置 行:1 字符: 3
    + cd <<<<  mydrive:\
        + CategoryInfo          : ObjectNotFound: (mydrive:String) [Set-Location],  
       DriveNotFoundException
        + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLo 
       cationCommand
    复制代码

    2、3 目录和文件的建立、复制、移动和删除

      在windows PS中,用item表示在系统驱动器中的项目,因此用item作为cmdlet名词部分的cmdlet都与文件或目录的操作有关。

    Exp:利用get-command的发现功能查询文件操作相关命令

    复制代码
    PS C:\> get-command *-item
    
    CommandType     Name                             Definition                     
    -----------     ----                             ----------                     
    Cmdlet          Clear-Item                       Clear-Item [-Path] <String[]...
    Cmdlet          Copy-Item                        Copy-Item [-Path] <String[]>...
    Cmdlet          Get-Item                         Get-Item [-Path] <String[]> ...
    Cmdlet          Invoke-Item                      Invoke-Item [-Path] <String[...
    Cmdlet          Move-Item                        Move-Item [-Path] <String[]>...
    Cmdlet          New-Item                         New-Item [-Path] <String[]> ...
    Cmdlet          Remove-Item                      Remove-Item [-Path] <String[...
    Cmdlet          Rename-Item                      Rename-Item [-Path] <String>...
    Cmdlet          Set-Item                         Set-Item [-Path] <String[]> ...
    复制代码

      从上面可以看到一共有9个相关的命令,但是这并没有包括全部的命令,因为还一个非常实用的命令:get-childitem;下面我们一一进行介绍:

    1) get-item

      get-item的作用是获取指定位置的项的相关信息。

    Exp:利用get-item获取当前路径下项的信息

    复制代码
    PS C:\> get-item .\
    
    
        目录: 
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d--hs         2012/4/20      6:38            C:\    
    复制代码

    Exp: 利用get-item获取当前用户home目录的信息

    复制代码
     PS C:\> get-item $home
    
    
        目录: C:\Users
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d----         2012/5/12     17:31            vol_20120330   
    复制代码

      这个命令具体可以参考帮助,其他就多说了。

    2)get-childitem

      这个命令获取某个项目中子项, 这个命令有很多的参数,但常用的有-name、 -recurse、-path、-force参数。

      name: 指定获取子项的时候仅枚举子项的名称。

      recurse: 递归获取

      path: 指定要枚举的路径,这个参数可以省略

      force:  获取所有的子项,包括隐藏的子项

      这个命令还有include、exclude两个常用的参数,具体就不介绍了,大家可以查看帮助。

    Exp:例举当前路径下的子项名称

    复制代码
    PS C:\> get-childitem -name
    DRIVERS
    PerfLogs
    Program Files
    Users
    Windows
    autoexec.bat
    config.sys
    gdiplus.dll
    复制代码

    Exp: 获取指定路径下的子项——获取$home路径下的子项

    复制代码
    PS C:\> get-childitem -path $home
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d-r--         2012/3/30     18:27            Contacts                           
    d-r--         2012/5/12     17:19            Desktop                            
    d-r--         2012/5/12     17:18            Documents                          
    d-r--         2012/5/12      5:34            Downloads                          
    d-r--          2012/5/2      9:51            Favorites                          
    d-r--         2012/3/30     18:27            Links                              
    d-r--         2012/4/30     14:15            Music                              
    d-r--         2012/3/30     18:27            Pictures                           
    d-r--         2012/3/30     18:27            Saved Games                        
    d-r--         2012/3/30     18:27            Searches                           
    d-r--         2012/3/30     18:27            Videos                             
    -a---         2012/5/12     17:25      10346 process.txt                        
    -a---         2012/5/12     17:31       5254 process1.txt                       
    -a---         2012/4/15     19:14        509 regwizard.log                      
    -a---         2012/4/15     19:14       9853 sanct.log                          
    
    
    
    _____________________________________________________________________________
    PS C:\> get-childitem  $home
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d-r--         2012/3/30     18:27            Contacts                           
    d-r--         2012/5/12     17:19            Desktop                            
    d-r--         2012/5/12     17:18            Documents                          
    d-r--         2012/5/12      5:34            Downloads                          
    d-r--          2012/5/2      9:51            Favorites                          
    d-r--         2012/3/30     18:27            Links                              
    d-r--         2012/4/30     14:15            Music                              
    d-r--         2012/3/30     18:27            Pictures                           
    d-r--         2012/3/30     18:27            Saved Games                        
    d-r--         2012/3/30     18:27            Searches                           
    d-r--         2012/3/30     18:27            Videos                             
    -a---         2012/5/12     17:25      10346 process.txt                        
    -a---         2012/5/12     17:31       5254 process1.txt                       
    -a---         2012/4/15     19:14        509 regwizard.log                      
    -a---         2012/4/15     19:14       9853 sanct.log    
    复制代码

    Exp: 获取所有的子项,利用force参数

    复制代码
    PS C:\> get-childitem -force
    
    
        目录: C:\
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d--hs         2012/3/30     18:27            $Recycle.Bin                       
    d--hs         2009/7/14     12:53            Documents and Settings             
    d----         2012/3/30     18:30            DRIVERS                            
    d-rh-          2012/4/3     16:33            MSOCache                           
    d----         2009/7/14     10:37            PerfLogs                           
    d-r--          2012/5/5     16:00            Program Files                      
    d--h-          2012/5/5     16:00            ProgramData                        
    d--hs         2012/3/30     18:26            Recovery                           
    d--hs          2012/5/6      9:18            System Volume Information          
    d-r--         2012/3/30     18:27            Users                              
    d----          2012/5/5     14:54            Windows                            
    -a---         2009/6/11      5:42         24 autoexec.bat                       
    -a---         2009/6/11      5:42         10 config.sys                         
    -a---         2008/9/10     15:00    1724416 gdiplus.dll                        
    -a-hs         2012/5/12      3:32 1551273984 hiberfil.sys                       
    -a-hs         2012/5/12      3:32 2068369408 pagefile.sys     
    复制代码

    Exp:递归获取路径下的子项

    复制代码
    PS C:\> get-childitem -path $home  -recurse
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d-r--         2012/3/30     18:27            Contacts                           
    d-r--         2012/5/12     17:19            Desktop                            
    d-r--         2012/5/12     17:18            Documents                          
    d-r--         2012/5/12      5:34            Downloads                          
    d-r--          2012/5/2      9:51            Favorites                          
    d-r--         2012/3/30     18:27            Links                              
    d-r--         2012/4/30     14:15            Music                              
    d-r--         2012/3/30     18:27            Pictures                           
    d-r--         2012/3/30     18:27            Saved Games                        
    d-r--         2012/3/30     18:27            Searches                           
    d-r--         2012/3/30     18:27            Videos                             
    -a---         2012/5/12     17:25      10346 process.txt                        
    -a---         2012/5/12     17:31       5254 process1.txt                       
    -a---         2012/4/15     19:14        509 regwizard.log                      
    -a---         2012/4/15     19:14       9853 sanct.log                          
    
    
        目录: C:\Users\vol_20120330\Contacts
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/3/30     18:27      68381 vol_20120330.contact               
    复制代码

      get-childitem还有一个值得一提的功能: 就是支持通配符 * 、?和 [] ; 具体不举实例了,基本和cmd里面的通配符差不多。

    3) new-item

      通过new-item命令创建新项, 这个命令支持的常用参数有: path、itemtype。

      path: 指定要创建的新项的存放位置

      itemtype:指定要创建的新项的类型

    Exp:  在 home路径下创建一个vol的文件夹,创建一个vol.txt 的文件

    复制代码
    PS C:\Users\vol_20120330> new-item -path $home\vol.txt  -itemtype file  
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     18:56          0 vol.txt    
    复制代码

      如上所示就为创建的文件。

    复制代码
    PS C:\Users\vol_20120330> new-item -path $home\vol  -itemtype directory
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d----         2012/5/12     18:57            vol    
    复制代码

      如上所示创建的是文件夹/目录。

    4、重命名项

      利用rename-item来重命名项。

    exp:

    复制代码
    PS C:\Users\vol_20120330> rename-item  vol.txt  volcanol.txt
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> ls
    
    
        目录: C:\Users\vol_20120330
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d-r--         2012/3/30     18:27            Contacts                           
    d-r--         2012/5/12     17:19            Desktop                            
    d-r--         2012/5/12     17:18            Documents                          
    d-r--         2012/5/12      5:34            Downloads                          
    d-r--          2012/5/2      9:51            Favorites                          
    d-r--         2012/3/30     18:27            Links                              
    d-r--         2012/4/30     14:15            Music                              
    d-r--         2012/3/30     18:27            Pictures                           
    d-r--         2012/3/30     18:27            Saved Games                        
    d-r--         2012/3/30     18:27            Searches                           
    d-r--         2012/3/30     18:27            Videos                             
    d----         2012/5/12     18:57            vol                                
    -a---         2012/5/12     17:25      10346 process.txt                        
    -a---         2012/5/12     17:31       5254 process1.txt                       
    -a---         2012/4/15     19:14        509 regwizard.log                      
    -a---         2012/4/15     19:14       9853 sanct.log                          
    -a---         2012/5/12     18:56          0 volcanol.txt                       
    复制代码

      如上所示,命令执行成功后vol.txt变为volcanol.txt;  注意rename-item不能用于移动项目。

    5、移动项目

       通过move-item移动项目

    Exp: 通过move-item将当前路径下的volcanol.txt 移动到vol目录下

    复制代码
    PS C:\Users\vol_20120330> cd vol
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330\vol> ls
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330\vol> move-item   ..\volcanol.txt  .\
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330\vol> ls
    
    
        目录: C:\Users\vol_20120330\vol
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     18:56          0 volcanol.txt                       
    复制代码

      如上所示,命令成功执行,volcanol.txt 被移动到vol目录下。

    6、复制项

      通过copy-item复制项,但是这里copy-item命令有一点特殊的特性,copy-item仅能复制容器,不能复制容器内的类容。

    复制代码
    PS C:\Users\vol_20120330> copy-item vol .\desktop
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-childitem vol
    
    
        目录: C:\Users\vol_20120330\vol
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     18:56          0 volcanol.txt                       
    
    
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-childitem .\Desktop
    
    
        目录: C:\Users\vol_20120330\Desktop
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d----         2012/5/12     19:10            vol                                
    -a---          2012/5/5     14:54       2001 QQ影音.lnk                           
    -a---         2012/5/12     17:05      79858 截图00.jpg                           
    -a---         2012/5/12     17:10     129290 截图01.jpg                           
    -a---         2012/5/12     17:16      10264 截图02.jpg                           
    -a---         2012/5/12     17:19      97789 截图03.jpg                           
    -a---          2012/4/6     19:36       1007 腾讯QQ.lnk                           
    
    
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-childitem .\Desktop\vol
    
    _____________________________________________________________________________
    复制代码

      如上面的执行情况所示,vol目录被成功的复制到desktop目录,但是vol下的volcanol.txt文件没有复制到desktop\vol下面。

      为了复制容器下的项目需要添加recurse参数。

    exp:复制容器下的项目

    复制代码
    PS C:\Users\vol_20120330> copy-item vol  .\desktop  -recurse
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-childitem vol
    
    
        目录: C:\Users\vol_20120330\vol
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     18:56          0 volcanol.txt                       
    
    
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-childitem .\Desktop
    
    
        目录: C:\Users\vol_20120330\Desktop
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    d----         2012/5/12     19:14            vol                                
    -a---          2012/5/5     14:54       2001 QQ影音.lnk                           
    -a---         2012/5/12     17:05      79858 截图00.jpg                           
    -a---         2012/5/12     17:10     129290 截图01.jpg                           
    -a---         2012/5/12     17:16      10264 截图02.jpg                           
    -a---         2012/5/12     17:19      97789 截图03.jpg                           
    -a---          2012/4/6     19:36       1007 腾讯QQ.lnk                           
    
    
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-childitem .\Desktop\volcanol
     
    PS C:\Users\vol_20120330> get-childitem .\Desktop\vol
    
    
        目录: C:\Users\vol_20120330\Desktop\vol
    
    
    Mode                LastWriteTime     Length Name                               
    ----                -------------     ------ ----                               
    -a---         2012/5/12     18:56          0 volcanol.txt                       
    
    
    
    _____________________________________________________________________________
    复制代码

      如上所示,vol下的文件也被复制。

    7、删除项目

      利用remove-item删除项目

    Exp:利用remove-item删除上面复制的内容

    复制代码
    PS C:\Users\vol_20120330> remove-item  .\Desktop\vol
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> remove-item  .\Desktop\vol -recurse
    
    _____________________________________________________________________________
    PS C:\Users\vol_20120330> get-item .\Desktop\vol
    Get-Item : 找不到路径“C:\Users\vol_20120330\Desktop\vol”,因为该路径不存在。
    所在位置 行:1 字符: 9
    + get-item <<<<  .\Desktop\vol
        + CategoryInfo          : ObjectNotFound: (C:\Users\vol_20120330\Desktop\vo 
       l:String) [Get-Item], ItemNotFoundException
        + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetIte 
       mCommand
     
    复制代码

      如上,第一个命令:  “PS C:\Users\vol_20120330> remove-item .\Desktop\vol”  在执行的时候当vol下面有文件的时候,会弹出一个

    对话框询问是否删除非空目录。

      第二个命令: “PS C:\Users\vol_20120330> remove-item .\Desktop\vol -recurse”  将直接删除目录容器及其包含的内容,而且不提示,因此

    在使用的时候需要注意。

      第三个命令:  “PS C:\Users\vol_20120330> get-item .\Desktop\vol” 的执行情况,说明第二个命令成功执行了。

    7、执行项目

      通过在PS中使用 invoke-item 命令可以实现执行项目的作用。

    Exp: 在PS中执行$home

      invoke-item  $home       #这个命令像在windows资源管理器中双击$home 目录一样,将会打开资源管理器,并且定位到$home目录。

    三、小结

      PS中关于重定向和文件目录管理的功能,还是非常易于使用的,掌握这些对系统管理将大有帮助。

     

    待续......

  • 相关阅读:
    测试框架Mockito使用笔记
    Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理
    C#学习笔记-数据的传递以及ToolStripProgressBar
    如果我们不曾相遇
    C#学习笔记-数据的传递(公共变量)以及Dictionary
    C#学习笔记-icon托盘图标的简单知识
    C#学习笔记-Windows窗体基本功能(Login登录界面)
    CellSet 遍历
    DevExpress PivotGrid 使用记录
    Funsioncharts 线图 破解
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/2957376.html
Copyright © 2011-2022 走看看