`

PowerShell 2.0 实践(一)操作文件系统 .

 
阅读更多

PowerShell是微软着力打造的下一代脚本语言,基于.NET Framework,功能强大,易于扩展,与微软及其第三方公司的许多产品进行了集成。Windows 7和Windows Server 2008 R2已经内置了PowerShell 2.0,其他操作系统需要单独下载,可以在这里下载。

示例脚本下载

本系列所有脚本均在Windows Server 2008 R2(PowerShell 2.0) + PowerGUI Script Editor中测试通过。

 

PowerShell 开发工具:

1、Windows PowerShell ISE:微软提供的一种轻量级的Power Shell IDE,默认存放在

%SystemRoot%\WINDOWS\system32\WindowsPowerShell\v1.0

 

支持代码着色、断点调试等,但是不支持智能感知:

2、PowerGUI Script Editor:Quest公司出品,是一个优秀的IDE,分为免费版与专业版,官方主页

方便的智能感知与语法提示,同样支持断点调试:

我将使用免费版的PowerGUI Script Editor进行测试。

3、PowerShell Plus:另一种强大的IDE,商业软件,官方主页

 

推荐资源:

TechNet PowerShell主页

TechNet PowerShell脚本中心

国人的PowerShell V2博客,很有深度,每月更新,推荐阅读。

一个PowerShell社区

PowerGUI社区,包含了很多扩展、示例、博客等。

Idera PowerShell主页,包含了很多扩展、示例、博客等。

微软PowerShell官方博客

 

下面我们来看一下PowerShell在文件系统中的应用。

PowerShell中没有文件的概念,只有项【Item】的概念,像Windows驱动器、目录、文件、注册表、变量等信息都被抽象成了"项"的概念,PowerShell使用"项"来进行统一管理。本次我们只关注文件系统,即目录、文件,其他系统后续篇章再做了解。

关于文件系统的命令有如下一些:

New-Item

Copy-Item

Move-Item

Remove-Item

Rename-Item

Invoke-Item

 

当然,这些命令不仅仅用于文件系统,像驱动器、注册表等都可以使用,本次我们只从文件系统的角度去关注这些命令。

 

  1. New-Item:在指定位置创建文件或目录。

1.1、创建一个目录:

New-Item -Path E:\PSTest\NewDir -ItemType Directory –Force

在E盘创建了PSTest\NewDir的目录结构,ItemType指出创建的项的类型,这里是目录"Directory",Force表明若目录结构存在则覆盖。

1.2、创建一个文件:

New-Item -Path E:\PSTest\NewDir\new.txt -ItemType File –Force

E:\PSTest\NewDir创建了new.txt文本文件,ItemType类型为File,存在则覆盖。

还有很多参数,如WhatIf:预判如果执行该命令将发生什么等,详细参数列表及其用法请参阅PowerShell文档,这里只列出了最常用的。

 

2、Copy-Item:复制文件、目录。

2.1、复制文件:

Copy-Item -Path E:\PSTest\NewDir\new.txt -Destination D:\ -PassThru –Force

将一个文件从E盘的一个目录复制到D盘,若存在则覆盖。PassThru会强制PowerShell返回命令执行后的结果,方便查看命令是否执行成功。看以看出,Copy-Item支持跨驱动器复制文件。

2.2、复制目录:

Copy-Item -Path E:\PSTest\NewDir -Destination D:\ -PassThru -Force –Recurse

将E盘中的一个目录复制到D盘,若存在则覆盖。请注意"Recurse"这个参数,只有加上这个参数PowerShell才会复制源目录中的所有子目录及其文件,否则只会复制源目录一个空壳。

 

3、Move-Item:移动文件、目录,相当于剪切。

3.1、移动文件:

Move-Item -Path E:\PSTest\NewDir\new.txt -Destination E:\ -PassThru –Force

移动一个文件到根目录,若存在则覆盖,支持跨驱动器移动:

Move-Item -Path E:\PSTest\NewDir\new.txt -Destination D:\ -PassThru –Force

3.2、移动目录:

Move-Item -Path E:\PSTest\NewDir -Destination E:\a\NewDir -PassThru –Force

移动一个目录,若存在则覆盖,注意源目录与目标目录不能位于同一目录中,且不能跨驱动器移动目录:

Move-Item -Path E:\PSTest\NewDir -Destination D:\ -PassThru –Force

Error:

Move-Item : Source and destination path must have identical roots. Move will not work across volumes

.

At line:1 char:10

+ Move-Item <<<< -Path E:\PSTest\NewDir -Destination D:\ -PassThru -Force

+ CategoryInfo : WriteError: (E:\PSTest\NewDir:DirectoryInfo) [Move-Item], IOException

+ FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

 

若需要跨驱动器移动目录,则可以先复制,再删除。

注意:

1Move-Item可以跨驱动器移动文件,目录不可以。

2Copy-Item 文件、目录均可以跨驱动器复制。

 

4、Remove-Item:删除文件、目录。

4.1、删除文件:

Remove-Item -Path E:\PSTest\NewDir\new.txt -Recurse

4.2、删除目录:

Remove-Item -Path E:\PSTest\NewDir

若目录中包含文件,则会提示:

若不想提示就加上-Recurse参数,想提示加上-Confirm。

 

5、Rename-Item:重命名文件、目录。

5.1、重命名文件:

Rename-Item -Path E:\PSTest\NewDir\new.txt old.txt –PassThru

5.2、重命名目录:

Rename-Item -Path E:\PSTest\NewDir OldDir –PassThru

 

6、Invoke-Item:打开文件、目录。

6.1、打开文件:

Invoke-Item C:\Windows\win.ini

Windows会调用指定文件的默认程序来打开文件,就像双击打开文件一样:

6.2、打开目录:

Invoke-Item C:\Windows

与打开文件类似,调用Windows资源管理器。

 

小结:

本次我们学习了PowerShell文件系统操作的基本命令,用了常见的参数,其他参数的用法可以参考文档。PowerShell的命令相当灵活,很多参数可以自由组合,顺序不定,给管理员提供了极大的便捷性。文件系统是计算机管理的基础部分,后续篇章会继续关注其他部分。

分享到:
评论

相关推荐

    windows powershell 2.0. best practices

    根据给定文件的信息,我们可以总结出关于《Windows PowerShell 2.0 Best Practices》一书的重要知识点,本书由Ed Wilson撰写并由Microsoft Press于2010年出版。 ### 关键知识点概览 #### 1. **Windows PowerShell ...

    Windows Powershell - EN

    - **命令行界面(CLI)**:PowerShell 提供了一个基于文本的用户界面,用户可以通过命令行执行各种系统操作。 - **对象导向**:与传统的命令提示符不同,PowerShell 返回的是对象,而非简单的文本流。这意味着你...

    pycocotools_windows-2.0.0.2-cp37-cp37m-win_amd64.zip

    在Windows操作系统上安装pycocotools可能会遇到一些挑战,因为其通常需要编译C++扩展,这在Windows环境中可能不如在Linux或MacOS环境下那么简单。不过,通过特定的预编译whl文件,我们可以绕过这个问题。 本文将...

    英语沙龙全站系统

    这个系统是基于.NET 2.0框架开发的,这是一款由微软提供的开源开发平台,用于构建Web应用程序。 【描述】:“[整站程序]英语沙龙全站系统 net 2.0_esalon.rar”是一个压缩文件,其中包含了整个“英语沙龙”网站的源...

    似新非新的“无文件攻击”.pdf

    【无文件攻击】是一种高级的攻击手段,它不依赖于在目标系统磁盘上创建持久化的恶意文件,而是将攻击载荷直接加载到内存中执行或利用系统已有的合法进程来隐藏恶意活动。这种攻击方式使得它能更有效地逃避传统的基于...

    azure-docs-powershell.pl-PL

    PowerShell允许用户通过命令行界面管理操作系统和应用程序,尤其适合处理系统管理任务和编写自动化脚本。 从压缩包子文件“azure-docs-powershell.pl-PL-live”来看,这可能是一个实时更新的、用于波兰语用户的...

    azure-docs-powershell.it-IT

    在开源项目中,常见的LICENSE文件格式有MIT、Apache 2.0、GPL等,但这里强调的是创建一个纯文本的LICENSE文件,而不是以TXT或MD(Markdown)等特定文件类型结尾的版本。 【标签】"PowerShell" 标签表明这个资源主要...

    DotNetVersionLister-master.rar

    标题中的"DotNetVersionLister-master.rar"表明这是一个与.NET框架版本列举相关的项目,很可能是一个工具或应用,用于查看已安装在系统上的不同.NET Framework版本。这个项目的源代码可能包含在压缩包内,以".zip...

    PowerTab:用于PowerShell的选项卡扩展模块。 处理更多内容并提供新的可选界面

    PowerShell是Microsoft推出的一种命令行脚本环境,它结合了命令行接口和脚本语言,使得系统管理更加便捷高效。PowerTab通过扩展PowerShell的默认选项卡补全能力,提供了更多的上下文感知选项,帮助用户快速输入命令...

    使用C#代码将目录从系统复制到pendrive(常规2.0 USB设备)

    PowerShell也可以用来实现这个功能,虽然它不是C#,但它提供了更高级别的抽象和对操作系统资源的访问。例如,以下PowerShell命令可以完成类似的任务: ```powershell $source = "C:\Source\Directory" $destination...

    Exchange Server 2007 x64 详细安装图解

    考虑到本次安装的操作系统为 x64 架构,因此我们需要安装 .NET Framework 2.0 的 x64 版本。 **2. 安装 MMC 3.0** 虽然 Windows Server 2003 R2 Enterprise x64 Edition 自带 MMC 3.0,但在这里还是简单介绍一下该...

    不可错过的六款Windows管理工具

    PowerShell 是一款由微软开发的强大命令行Shell及脚本环境,专为Windows系统管理员设计。它不仅支持传统的命令行交互模式,还允许通过编写脚本来实现复杂的管理任务自动化。 **特点:** - **基于.NET Framework:**...

    O365Report

    **O365Report** 是一个与Microsoft Office 365相关的项目,它涉及使用C#编程语言和PowerShell脚本进行报表生成的操作。在IT领域,尤其是Office 365管理中,能够获取和分析使用数据对于优化服务、监控性能和确保合规...

    Windows Server 2008 技术白皮书

    中文版本的发布使得国内用户能够更好地理解和应用这一操作系统。 1. **服务器核心模式**:Windows Server 2008引入了服务器核心模式,这是一种精简的安装选项,只包含执行特定服务器角色所需的基本组件,如DNS、...

    win8风格图表大全.ppt

    24. **PowerShell 2.0 Support**:对 PowerShell 版本 2.0 的支持,自动化管理任务。 25. **PHP & Java Connectivity**:SQL Server与PHP和Java应用程序的互操作性。 26. **SQL Audit for All Editions**:SQL ...

    E2E_LocalManage_PROD.zh-cn

    5. **PowerShell的自动化任务**:学习如何使用PowerShell来自动化日常的系统管理任务,例如文件管理、注册表操作、网络配置等。 6. **PowerShell与.NET集成**:利用PowerShell调用.NET Framework的功能,创建复杂的...

Global site tag (gtag.js) - Google Analytics