前面的一篇文章我们说了部分在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-locationPath
----
C:\                                                                             _____________________________________________________________________________
PS C:\> pop-location_____________________________________________________________________________
PS C:\Users\vol_20120330> get-locationPath
----
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:\> glPath
----
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 *-itemCommandType     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:\UsersMode                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_20120330Mode                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_20120330Mode                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_20120330Mode                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\ContactsMode                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_20120330Mode                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_20120330Mode                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_20120330Mode                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\volMode                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\volMode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         2012/5/12     18:56          0 volcanol.txt                       _____________________________________________________________________________
PS C:\Users\vol_20120330> get-childitem .\Desktop目录: C:\Users\vol_20120330\DesktopMode                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\volMode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         2012/5/12     18:56          0 volcanol.txt                       _____________________________________________________________________________
PS C:\Users\vol_20120330> get-childitem .\Desktop目录: C:\Users\vol_20120330\DesktopMode                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\volcanolPS C:\Users\vol_20120330> get-childitem .\Desktop\vol目录: C:\Users\vol_20120330\Desktop\volMode                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中关于重定向和文件目录管理的功能,还是非常易于使用的,掌握这些对系统管理将大有帮助。

转载于:https://www.cnblogs.com/micro-chen/p/5776147.html

PowerShell 中的目录文件管理相关推荐

  1. Linux中的目录和文件管理

    Linux中的目录和文件管理 1:Linux的命令分类:内部命令和外部命令 内部命令属于shell解释器的一部分 外部命令是独立于shell解释器之外的程序文件 2:Linux命令的通用格式 命令字  ...

  2. PowerShell_5_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念

    据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量进行改变外,其环境的可自定义性相对来说很困难,而在Linux环境中,可以通过修改/etc目录下的某些配置文件 ...

  3. PowerShell与活动目录

    自从发布以来,Windows PowerShell已经成为Windows自动化平台的选择.它的强大和灵活已经在许多环境中被许多Windows技术所证明.不幸的是,在活动目录支持方面,PowerShel ...

  4. 在PowerShell中批量卸载设备

    目录 介绍 使用代码 兴趣点 此提示详细介绍了在PowerShell中从Windows系统批量删除即插即用设备所需的步骤.该脚本旨在删除安装了多个副本的设备,但可以进行调整以适应其他条件.它需要Pow ...

  5. (8)Powershell中变量的定义和使用

    上一节介绍了Powershell中的算术运算符,详细内容参考这里,这些运算符主要用于字符串的连接,组成bool表达式等用于对管道中的命令执行结果进行筛选,我们将会后续的文章中讲到. 这一节主要介绍Po ...

  6. PowerShell:如何用PowerShell创建WinForm窗体?-在PowerShell中使用GUI界面

    从印度小哥那里受到启发,PowerShell不止可以做批处理,自动化.还能做界面做GUI,也能实现很好的交互.因为PowerShell是可以和.Net 程序无缝集成的.所以.Net能用的东西在Powe ...

  7. Windows如何在CMD或PowerShell中配置代理,报错及解决方法

    文章目录 Windows代理配置 设置代理 查看代理 取消代理 配置代理时产生的错误 Windows代理配置 有时候,我们在做常规渗透测试的时候,经常在浏览器上挂代理,但不难发现cmd中的ip还是本地 ...

  8. [原创][PowerShell教程][06]PowerShell中格式化命令和输出命令

    好久不见, 我又食言了, 一直没有更新教程, 我也不想找借口, 因为我花了很多时间跑去玩大蛇无双和魔王再临. 今天, 我将为您介绍如何使用格式化和输出命令. 在PowerShell中,负责进行格式化和 ...

  9. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

最新文章

  1. 机器学习(7)--VC维数
  2. Visual Studio原生开发的20条调试技巧(下)
  3. TOPSIS(逼近理想解)算法原理详解与代码实现
  4. db2诊断系列之---定位锁等待问题
  5. HTML5之本地存储localstorage
  6. 一、MySQL数据库优化策略
  7. 手摸手教你阅读和调试大型开源项目 ZooKeeper
  8. Ubuntu下Maven安装和使用
  9. 服务器安装字体库解决出现xx问题
  10. 大师教你在网吧免费上网
  11. Android权限请求第三方库的比较
  12. Springboot无法启动:At least one base package must be specified
  13. 略谈中国软件产品化的路线图
  14. POI 导出Excel
  15. 计算机网络实验(思科模拟器Cisco Packet Tracer)配置静态路由使三台pc机网络互通
  16. python操作无界面的chrome浏览器(转)
  17. cad一键卸载工具叫什么_autodesk软件一键卸载工具
  18. 2021年广西卫生系统副高考试成绩查询,2021年广西卫生资格考试成绩查询-中国卫生人才网...
  19. 2020 C++及系统软件技术大会全套PPT
  20. 解决Chrome网页编码显示乱码的问题

热门文章

  1. Bloom Filter(布隆过滤器)的概念和原理(转)
  2. 店铺流量提升及推广方法
  3. 首次曝光!唯一全域最高等级背后的阿里云云原生安全全景图
  4. 【瑞禧】石墨烯修饰离子掺杂LDHs材料系列--石墨烯/钴镍双金属氢氧化物复合材料
  5. 具有外内学习和单色瓶颈的图像修复——两阶段渐进式图像修复示例【CVPR 2021】
  6. 职高内蒙古计算机系高考最高分,内蒙古一考生高考668分,数学拿到满分,查分时还在淡定吃烧烤...
  7. 设计模式案例分析与实现
  8. 【Redis】用windows客户端连接服务器上的Redis
  9. 狭义的Infra到广义的Infra_看看AWS的发展
  10. 小程序 点击图片放大预览