`

PowerShell基础教程(10)——处理文件、文件夹和注册表项

阅读更多

PowerShell基础教程(10)——处理文件、文件夹和注册表项             <o:p></o:p>

Windows PowerShell 使用名词来表示在 Windows PowerShell 驱动器中找到的数据。当处理 Windows PowerShell FileSystem 提供程序时,可以是文件、文件夹或 Windows PowerShell 驱动器。在大多数管理设置中,列出并处理这些项是一项重要的基本任务,因此我们应对这些任务进行详细的讨论。<o:p></o:p>

枚举文件、文件夹和注册表项 (Get-ChildItem)<o:p></o:p>

由于从特定位置获取项集合是非常常见的任务因此 Get-ChildItem cmdlet 旨在返回容器例如文件夹中找到的所有项。

若要返回文件夹 C:\Windows 中直接包含的所有文件和文件夹请键入

PS> Get-ChildItem -Path C:\Windows<o:p></o:p>

Directory:Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows<o:p></o:p>

Mode                LastWriteTime     Length Name<o:p></o:p>

----                -------------     ------ ----<o:p></o:p>

-a---        2006-05-16   <st1:timeminute10hour w:st="on">8:10 AM</st1:timeminute10hour>          0 0.log<o:p></o:p>

-a---        2005-11-29   <st1:timeminute16hour w:st="on"><st1:timeminute16hour w:st="on">3:16 PM</st1:timeminute16hour>         97</st1:timeminute16hour> acc1.txt<o:p></o:p>

-a---        2005-10-23  <st1:timeminute21hour w:st="on">11:21 PM</st1:timeminute21hour>       3848 actsetup.log<o:p></o:p>

...<o:p></o:p>

<o:p> </o:p>

Cmd.exe 输入 dir 命令或在 UNIX 命令外壳程序中输入 ls 命令所列出的内容与您所看到的内容相似。

可以使用 Get-ChildItem cmdlet 参数来执行非常复杂的列表操作。我们将看到以下几种情况。您可以通过键入以下命令来查看 Get-ChildItem cmdlet 的语法:

PS> Get-Command -Name Get-ChildItem -Syntax<o:p></o:p>

<o:p> </o:p>

可以将这些参数进行混合和匹配以获得较高程度的自定义输出。

列出所有包含的项 (-Recurse)<o:p></o:p>

若要查看 Windows 文件夹内部的项及其子文件夹中包含的所有项请使用 Get-ChildItem Recurse 参数。列表操作将显示 Windows 文件夹中的所有内容及其子文件夹中的所有项。例如:

PS> Get-ChildItem -Path C:\WINDOWS -Recurse<o:p></o:p>

<o:p> </o:p>

Directory:Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS<o:p></o:p>

Directory:Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch<o:p></o:p>

Mode                LastWriteTime     Length Name<o:p></o:p>

----                -------------     ------ ----<o:p></o:p>

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>    1852416 AcGenral.dll<o:p></o:p>

...<o:p></o:p>

<o:p> </o:p>

按名称筛选项 (-Name)<o:p></o:p>

若要仅显示项名称请使用 Get-Childitem Name 参数

PS> Get-ChildItem -Path C:\WINDOWS -Name<o:p></o:p>

addins<o:p></o:p>

AppPatch<o:p></o:p>

assembly<o:p></o:p>

...<o:p></o:p>

<o:p> </o:p>

强制列出隐藏项 (-Force)<o:p></o:p>

通常 Windows 资源管理器或 Cmd.exe 中可见的项均不会显示在 Get-ChildItem 命令的输出中。若要显示隐藏项,请使用 Get-ChildItem Force 参数。例如:

Get-ChildItem -Path C:\Windows -Force<o:p></o:p>

<o:p> </o:p>

由于可强制覆盖 Get-ChildItem 命令的正常行为因此此参数命名为 ForceForce 参数使用广泛,它可强制执行 cmdlet 非正常执行的操作,但该参数不执行危及系统安全的任何操作。

将项名称与通配符匹配<o:p></o:p>

Get-ChildItem 命令在要列出的项路径中接受通配符。

由于通配符匹配是通过 Windows PowerShell 引擎处理的因此接受通配符的所有 cmdlet 都可使用相同的表示法并具有相同的匹配行为。Windows PowerShell 通配符表示法包括

·      星号 (*) 与零或更多出现的字符匹配。<o:p></o:p>

·      问号 (?) 仅与一个字符匹配。<o:p></o:p>

·      左方括号 ([) 字符和右方括号 (]) 字符可括住一组要进行匹配的字符。 <o:p></o:p>

此处为如何应用通配符规范的一些示例。

若要查找 Windows 目录中具有后缀 .log且基名称只有五个字符的所有文件请输入以下命令

PS> Get-ChildItem -Path C:\Windows\?????.log<o:p></o:p>

Directory:Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows<o:p></o:p>

Mode                LastWriteTime     Length Name<o:p></o:p>

----                -------------     ------ ----<o:p></o:p>

...<o:p></o:p>

-a---        2006-05-11   <st1:timehour18minute w:st="on">6:31 PM</st1:timehour18minute>     204276 ocgen.log<o:p></o:p>

-a---        2006-05-11   6:31 PM      22365 ocmsn.log<o:p></o:p>

...<o:p></o:p>

-a---        2005-11-11   <st1:timehour4minute w:st="on">4:55 AM</st1:timehour4minute>         64 setup.log<o:p></o:p>

-a---        2005-12-15   <st1:timeminute24hour w:st="on">2:24 PM</st1:timeminute24hour>      17719 VxSDM.log<o:p></o:p>

...<o:p></o:p>

<o:p> </o:p>

若要查找 Windows 目录中以字母 x 开头的所有文件请键入

Get-ChildItem -Path C:\Windows\x*<o:p></o:p>

<o:p> </o:p>

若要查看其文件名以 x z 开头的所有文件请键入

Get-ChildItem -Path C:\Windows\[xz]*<o:p></o:p>

<o:p> </o:p>

排除项 (-Exclude)<o:p></o:p>

通过使用 Get-ChildItem Exclude 参数可以排除特定的项。即,在单语句中执行复杂的筛选操作。

例如假设您要在 System32 文件夹中查找 Windows 时间服务 DLL但您只记得 DLL 名称是以W开头并且其中有数字32 

使用类似表达式 w*32*.dll 即可找到符合该条件的所有 DLL但该表达式还会返回其名称中包含9516的与 Windows 95 16 Windows 兼容的 DLL。您可以使用模式为 *[9516]* Exclude 参数省略名称中具有这些数字的所有文件: 

PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude *[9516]*

<o:p> </o:p>

<o:p> </o:p>

Directory:Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\System32

<o:p> </o:p>

<o:p> </o:p>

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>     174592 w32time.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>      22016 w32topl.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>     101888 win32spl.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>     172032 wldap32.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>     264192 wow32.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>      82944 ws2_32.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>      42496 wsnmp32.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>      22528 wsock32.dll

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>      18432 wtsapi32.dll

混合使用 Get-ChildItem 参数<o:p></o:p>

您可以在同一命令中使用 Get-ChildItem cmdlet 的多个参数。在混合使用参数之前,请确保您了解通配符匹配。例如,以下命令将不会返回任何结果:

PS> Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll<o:p></o:p>

<o:p> </o:p>

即使 Windows 文件夹中包含两个以字母z开头 DLL也不会返回任何结果。

不返回任何结果是由于我们将通配符指定为该路径的一部分。即使该命令是递归的,但 Get-ChildItem cmdlet 仍将这些项限制为 Windows 文件夹中其名称以“.dll”结尾的项。

若要为其名称与特定模式相匹配的文件指定递归搜索,请使用 -Include 参数。

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll<o:p></o:p>

<o:p> </o:p>

Directory:Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32\Setup<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

Mode                LastWriteTime     Length Name<o:p></o:p>

----                -------------     ------ ----<o:p></o:p>

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>       8261 zoneoc.dll<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

Directory:Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

Mode                LastWriteTime     Length Name<o:p></o:p>

----                -------------     ------ ----<o:p></o:p>

-a---        2004-08-04   <st1:timehour8minute w:st="on">8:00 AM</st1:timehour8minute>     337920 zipfldr.dll<o:p></o:p>

<o:p> </o:p>

 
分享到:
评论

相关推荐

    PowerShell基础教程.doc

    PowerShell的基础教程主要涵盖了它与传统外壳程序的区别、Cmdlet的使用、全新的脚本语言特性和与Windows命令及实用工具的集成。 1. **处理方式的不同**: PowerShell 不像传统的Cmd.exe或其他Unix外壳程序那样处理...

    [注册表]Windows10文件夹内Shift+右键菜单添加打开管理员Powershell窗口

    Win10 系统通过双击本注册表项来合并注册表,可以实现在文件夹内(包括在桌面)通过 Shift+鼠标右键在当前位置打开管理员 Powershell 窗口。 修改后效果: 以桌面为例,通过Shift+鼠标右键,会多出来一个“在此处...

    删除.svn文件夹的注册表

    本文将详细介绍如何通过修改注册表来实现这一目标,并提供一个名为“删除.svn文件夹注册表”的压缩包文件,帮助用户一键删除.svn文件夹。 首先,了解注册表在Windows系统中的作用。注册表是Windows操作系统的核心...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    本书全面地介绍了Windows Server 2008命令行、PowerShell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,...

    PowerShell使用Remove-Item命令删除文件、注册表项介绍

    它可以删除包括但不限于文件、目录、注册表项、变量、别名和函数等多种类型的项目。`Remove-Item`命令有多个别名,如`ri`、`rm`、`rmdir`、`del`、`erase`和`rd`,这些别名来源于传统的DOS和Linux系统下的命令,使得...

    PowerShell获取指定目录下文件列表和大小并保存成txt文档

    PowerShell获取指定目录下文件列表和大小并保存成txt文档

    [注册表]Windows10文件夹图标上及文件夹内Shift+右键菜单添加打开管理员Powershell窗口

    Win10系统通过双击本注册表项来合并注册表,可以实现在文件夹图标上及文件夹内(包括在桌面)通过 Shift+鼠标右键在当前位置打开管理员 Powershell 窗口。 修改后效果: Shift+鼠标右击文件夹图标,或者在文件夹内 ...

    PowerShell教程

    4. **提供者**: PowerShell支持多种提供者,如文件系统提供者(允许对文件和目录进行操作)和注册表提供者(允许访问注册表键和值)。 **PowerShell进阶** 1. **脚本编写**: PowerShell支持使用PowerShell语言编写...

    powershell3.0经典教程

    例如,可以像操作文件夹和文件一样操作Windows注册表项。 4. **使用PowerShell远程管理和作业(Remoting and Jobs)**: - PowerShell的远程功能允许用户远程执行命令和脚本,使得管理远程计算机变得更加容易。 -...

    [注册表]Windows10文件夹图标上Shift+右键菜单添加打开管理员Powershell窗口

    Win10系统通过双击本注册表项来合并注册表,可以实现在文件夹图标上通过 Shift+鼠标右键在当前位置打开管理员 Powershell 窗口。 修改后效果: Shift+鼠标右击文件夹图标,会多出来一个“在此处打开管理员 ...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    PowerShell脚本监控文件夹变化实例

    本文介绍使用PowerShell来监视一个指定的文件夹,包括新建文件、删除文件、重命名文件等操作均会被监控或监视。本文使用了System.IO.FileSystemWatcher这个.NET对象。首先,我们来看看程序: 代码如下: # 定义要...

    PowerShell基础教程

    【PowerShell基础教程】 PowerShell是一种专为管理和自动化Windows操作系统设计的强大脚本语言,自Windows XP/Server 2003起,它逐渐成为Vista、Server 2008及后续版本的标准组件。PowerShell旨在提升系统管理员的...

    PowerShell 基础教程

    【PowerShell基础教程】 PowerShell是一种强大的脚本语言和命令行shell,主要应用于Windows操作系统,如XP、Server 2003、Vista和Server 2008。不同于传统的外壳程序(如Cmd.exe、SH、KSH、CSH和BASH),PowerShell...

    精通windows server 2008 命令行与powershell电子书PDF版(第二卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    Windows PowerShell教程合集

    精心挑选和整理的关于Windows PowerShell的教程 |powershell 技术文档 --|Powershell_技术教程.doc --|PowerShell基础教程 --|WindowsPowerShelluserGuide |powershell 中文教程 --|Windows PowerShell 入门指南...

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...

    powershell脚本转exe文件

    在IT行业中,有时我们需要将...总的来说,将PowerShell脚本转换为EXE文件是一项常见的需求,它涉及到了代码的编译、打包和分发等多个方面。理解这一过程对于系统管理员、开发者和自动化专家来说是非常重要的。

    经典PowerShell入门教程.docx

    传统外壳程序如Cmd.exe、SH、KSH、CSH和BASH通常以文本格式处理命令输出,而PowerShell则处理基于.NET平台的对象,这使得数据处理更为灵活和强大。 PowerShell的核心概念之一是Cmdlet(发音为“command-let”),...

Global site tag (gtag.js) - Google Analytics