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,商業軟件,官方主頁。
推薦資源:
國人的PowerShell V2博客,很有深度,每月更新,推薦閱讀。
PowerGUI社區,包含了很多擴展、示例、博客等。
Idera PowerShell主頁,包含了很多擴展、示例、博客等。
下面我們來看一下PowerShell在文件系統中的應用。
PowerShell中沒有文件的概念,只有項【Item】的概念,像Windows驅動器、目錄、文件、注冊表、變量等信息都被抽象成了"項"的概念,PowerShell使用"項"來進行統一管理。本次我們只關注文件系統,即目錄、文件,其他系統后續篇章再做了解。
關於文件系統的命令有如下一些:
New-Item
Copy-Item
Move-Item
Remove-Item
Rename-Item
Invoke-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
若需要跨驅動器移動目錄,則可以先復制,再刪除。
注意:
1、Move-Item可以跨驅動器移動文件,目錄不可以。
2、Copy-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的命令相當靈活,很多參數可以自由組合,順序不定,給管理員提供了極大的便捷性。文件系統是計算機管理的基礎部分,后續篇章會繼續關注其他部分。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。