提供者名稱

FileSystem

磁碟機

C、D

簡短描述

提供檔案和目錄的存取權。

詳細描述

Windows PowerShell FileSystem 提供者可以用來取得、新增、變更、清除和刪除 Windows PowerShell 中的檔案和目錄。

FileSystem 提供者會公開對應到您電腦上所設定之邏輯磁碟機的 Windows PowerShell 磁碟機,其中包括已對應到網路共用的磁碟機。例如,裝有一台軟碟機、一台硬碟機和一個對應的網路共用目錄的電腦,其磁碟機名稱可能會顯示 A、C 和 Z。FileSystem 提供者會公開直接對應到 A、C 和 Z 的 Windows PowerShell 磁碟機,讓您能夠從 Windows PowerShell 內部參考這些磁碟機。例如,您可以使用 C: 來參照磁碟機 C,如下列範例所示:

Get-ChildItem 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 磁碟機的內容,您可以使用下列命令:

Get-ChildItem 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

請參閱




目錄