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返回命令執行后的結果,方便查看命令是否執行成功。看以看出,Move-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的命令相當靈活,很多參數可以自由組合,順序不定,給管理員提供了極大的便捷性。文件系統是計算機管理的基礎部分,后續篇章會繼續關注其他部分。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com