提供者名稱
FileSystem
磁碟機
C、D
簡短描述
提供檔案和目錄的存取權。
詳細描述
Windows PowerShell FileSystem 提供者可以用來取得、新增、變更、清除和刪除 Windows PowerShell 中的檔案和目錄。
FileSystem 提供者會公開對應到您電腦上所設定之邏輯磁碟機的 Windows PowerShell 磁碟機,其中包括已對應到網路共用的磁碟機。例如,裝有一台軟碟機、一台硬碟機和一個對應的網路共用目錄的電腦,其磁碟機名稱可能會顯示 A、C 和 Z。FileSystem 提供者會公開直接對應到 A、C 和 Z 的 Windows PowerShell 磁碟機,讓您能夠從 Windows PowerShell 內部參考這些磁碟機。例如,您可以使用 C: 來參照磁碟機 C,如下列範例所示:
這個命令會傳回 C 磁碟機上的所有內容,包括檔案和目錄。當您透過 FileSystem 提供者參考特定目錄或檔案時,必須提供可識別該目錄或檔案的必要資訊。這表示在某些情況下,您必須提供完整格式名稱。完整格式名稱包括了磁碟機名稱 (加上冒號)、任何目錄和子目錄名稱,以及檔案名稱 (如果適用的話)。例如,下列範例會顯示 Shell.dll 檔案的完整格式名稱,此檔案是位在 C 磁碟機上 Windows 目錄的 System32 子目錄中:
c:\windows\system32\shell.dll
您可以發現到,完整格式名稱的每個元素都是以反斜線 (\) 分隔。Windows PowerShell 也允許您使用斜線 (/),以便與各種其他殼層維持一致性。
在某些情況下,您並不需要在參照檔案或目錄時提供完整格式名稱。例如,如果您想要存取目前工作位置中的檔案,則只需要提供該檔案名稱即可。如果目前工作位置是 c:\windows,您就可以使用下列命令來檢視位在該目錄中的所有 .dll 檔案清單:
Get-ChildItem *.dll
如果工作目錄不是 c:\windows,而是類似 c:\program files\Windows PowerShell 的其他位置,您的命令就需要包含完整格式名稱:
Get-ChildItem c:\windows\*.dll
在某些情況下,您可以使用相對的位置參照。如果工作位置是 c:\windows,而您想要檢視 c:\windows\system32 目錄中的 .dll 檔案清單,則可以使用下列命令:
Get-ChildItem .\system32\*.dll
在 \system32 前面的句號代表目前的工作位置。
在某些情況下,目前的工作位置會是在其他磁碟機上,而不是在 FileSystem 磁碟機上。如果遇到這種情況,您一律必須在參照中包含目標磁碟機的名稱。例如,假設目前的工作位置是 env: 磁碟機。若要檢視 C 磁碟機的內容,您可以使用下列命令:
範例
瀏覽檔案系統
-------------------------- 範例 1 --------------------------
這個命令會取得目前的位置:
get-location
Get-Location Cmdlet 所包含的命令功能類似於 Windows 命令提示字元中的 cd 命令以及 UNIX 中的 pwd 命令。如需詳細資訊,請輸入: get-help get-location
-------------------------- 範例 2 --------------------------
這個命令會設定目前的位置:
set-location C:
取得檔案和目錄資訊
-------------------------- 範例 1 --------------------------
這個命令會取得目前目錄中的所有檔案和目錄:
get-childitem
根據預設,Get-ChildItem Cmdlet 不會遞迴執行。當您執行這個命令時,如果目前的目錄存在檔案和資料夾,系統就會傳回 System.IO.FileInfo 物件和 System.IO.DirectoryInfo 物件。
-------------------------- 範例 2 --------------------------
這個命令會使用 Get-ChildItem 來取得目前目錄中的所有檔案和目錄:
get-childitem | where-object {!$_.psiscontainer}
它會經由管道將結果輸出至 Where-Object,由後者檢查 PSIsContainer 屬性,並且只讓不是 (!) 容器的物件通過管線。
-------------------------- 範例 3 --------------------------
這個命令會使用 Get-ChildItem 來取得目前目錄中的所有檔案和目錄。它會經由管道將結果輸出至 Where-Object,由後者檢查 PSIsContainer 屬性,並且只讓屬於容器的物件通過管線。
get-childitem | where-object {$_.psiscontainer}
-------------------------- 範例 4 --------------------------
這個命令會使用 Get-ChildItem 來取得目前目錄中的所有檔案和目錄:
get-item -path a | format-list *
它會經由管道將結果輸出至 Where-Object Cmdlet,由後者檢查 PSIsContainer 屬性,並且只讓屬於容器的物件通過管線。
-------------------------- 範例 5 --------------------------
這個命令會使用 Get-Item Cmdlet 來取得 Test.txt 檔案的相關資訊:
get-item -path test.txt | format-list *
Format-List Cmdlet 是用於顯示產生之物件的所有屬性。
複製檔案和目錄
-------------------------- 範例 1 --------------------------
這個命令會將 A.txt 檔案從 C:\A 目錄複製到 C:\A\Bb 目錄:
copy-item -path C:\a\a.txt -destination C:\a\bb\a.txt
它會在不先提示確認的情況下,覆寫目的地目錄中的檔案。
-------------------------- 範例 2 --------------------------
這個命令會將 C:\A\Bb 目錄中所有副檔名為 .txt 的檔案複製到 C:\A\Cc\Ccc\ 目錄:
copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\
它會使用檔案的原始名稱。這個命令會在不先提示確認的情況下,覆寫目的地目錄中現有的檔案。
-------------------------- 範例 3 --------------------------
將 C:\a 目錄中的所有目錄和檔案複製到 C:\c 目錄。除非指定 Force 參數,否則當目的地目錄中已存在任何一個要複製的目錄時,此命令將會失敗。
copy-item -path C:\a\* -destination C:\c -recurse
移動檔案和目錄
-------------------------- 範例 1 --------------------------
這個命令會將 C:\A 目錄中的 C.txt 檔案移動到 C:\A\Aa 目錄:
move-item -path C:\a\c.txt -destination C:\a\aa
這個命令不會自動覆寫具有相同名稱的現有檔案。若要強制此 Cmdlet 覆寫現有的檔案,請指定 Force 參數。
-------------------------- 範例 2 --------------------------
這個命令會將 C:\A 目錄及其所有內容移動到 C:\B 目錄:
move-item -path C:\a -destination C:\b
如果您所要移動的目錄就是目前的位置,則無法移動該目錄。
管理檔案內容
-------------------------- 範例 1 --------------------------
這個命令會將 "test content" 字串附加到 Test.txt 檔案:
add-content -path test.txt -value "test content"
在 Test.txt 檔案中的現有內容並不會被刪除。
-------------------------- 範例 2 --------------------------
這個命令會取得 Test.txt 檔案的內容,並將內容顯示在主控台中:
get-content -path test.txt
您可以經由管道將檔案的內容輸出至其他 Cmdlet。例如,下列命令會讀取 Test.txt 檔案的內容,然後提供它們做為 ConvertTo-HTML Cmdlet 的輸入: get-content -path test.txt |convertto-html
-------------------------- 範例 3 --------------------------
這個命令會將 Test.txt 檔案的內容取代成 "test content" 字串:
set-content -path test.txt -value "test content"
它會覆寫 Test.txt 的內容。您可以在建立檔案時,使用 New-Item Cmdlet 的 Value 參數為該檔案新增內容。
管理安全性描述元
-------------------------- 範例 1 --------------------------
這個命令會傳回 System.Security.AccessControl.FileSecurity 物件:
get-acl -path test.txt | format-list -property *
如需這個物件的詳細資訊,請經由管道將此命令輸出至 Get-Member Cmdlet。或者,請參閱 MSDN (Microsoft Developer Network) Library 中的<FileSecurity 類別>,網址為:https://go.microsoft.com/fwlink/?LinkId=145718。
-------------------------- 範例 2 --------------------------
這個命令會傳回 System.Security.AccessControl.DirectorySecurity 物件:
get-acl -path test_directory | format-list -property *
如需這個物件的詳細資訊,請經由管道將此命令輸出至 Get-Member Cmdlet。或者,請參閱 MSDN (Microsoft Developer Network) Library 中的<DirectorySecurity 類別>,網址為:https://go.microsoft.com/fwlink/?LinkId=145736。
建立檔案和目錄
-------------------------- 範例 1 --------------------------
這個命令會在 C 磁碟機上建立 Logfiles 目錄:
new-item -path c:\ -name logfiles -type directory
-------------------------- 範例 2 --------------------------
這個命令會在 C:\Logfiles 目錄中建立 Log2.txt 檔案,然後將 "test log" 字串新增到此檔案:
new-item -path c:\logfiles -name log.txt -type file
-------------------------- 範例 3 --------------------------
在 C:\logfiles 目錄中建立名為 Log2.txt 的檔案,並將字串 "test log" 新增到此檔案。
new-item -path c:\logfiles -name log2.txt -type file -value "test log"
重新命名檔案和目錄
-------------------------- 範例 1 --------------------------
這個命令會將 C:\A 目錄中的檔案 A.txt 重新命名為 B.txt:
rename-item -path c:\a\a.txt -newname b.txt
-------------------------- 範例 2 --------------------------
這個命令會將 C:\A\Cc 目錄重新命名為 C:\A\Dd:
rename-item -path c:\a\cc -newname dd
刪除檔案和目錄
-------------------------- 範例 1 --------------------------
這個命令會刪除目前目錄中的 Test.txt 檔案:
remove-item -path test.txt
-------------------------- 範例 2 --------------------------
這個命令會刪除目前目錄中副檔名為 .xml 的所有檔案:
remove-item -path *.xml
透過呼叫關聯檔案來啟動程式
-------------------------- 範例 1 --------------------------
第一個命令會使用 Get-Service Cmdlet 來取得本機服務的相關資訊。
它會經由管道將資訊輸出至 Export-Csv Cmdlet,然後將該項資訊儲存在 Services.csv 檔案中。
第二個命令會使用 Invoke-Item,在與 .csv 副檔名相關聯的程式中開啟 Services.csv 檔案:
get-service | export-csv -path services.csv invoke-item -path services.csv
動態參數
動態參數是 Cmdlet 參數,由 Windows PowerShell 提供者所新增,只有在已啟用提供者之磁碟機上的 Cmdlet 方可使用。
Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Value | Description |
---|---|
不明 |
編碼類型不明或無效。資料可以視為二進位格式處理。 |
String |
使用字串適用的編碼類型。 |
Unicode |
編碼成使用 Little-Endian 位元組順序的 UTF-16 格式。 |
Byte |
將字元集編碼成位元組序列。 |
BigEndianUnicode |
編碼成使用 Big-Endian 位元組順序的 UTF-16 格式。 |
UTF8 |
編碼成 UTF-8 格式。 |
UTF7 |
編碼成 UTF-7 格式。 |
ASCII |
使用 ASCII (7-bit) 字元集適用的編碼類型。 |
所支援的 Cmdlet
Delimiter <System.String>
指定在讀取檔案時所要使用的分隔字元。預設值為 "\n" (行尾)。
所支援的 Cmdlet
Wait <System.Management.Automation.SwitchParameter>
等候要附加到檔案中的內容。如果已經附加內容,它會傳回該附加內容。如果內容被更改,它會傳回整個檔案。
進行等候時,Get-Content 每秒鐘都會檢查一次檔案,直到您中斷檢查 (例如,按下 CTRL+C) 為止。
所支援的 Cmdlet
請參閱