共用方式為


FileSystem 提供者

提供者名稱

FileSystem

磁碟機

C:, D: ...

功能

FilterShouldProcess

簡短描述

提供檔案與目錄的存取。

詳細描述

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

FileSystem 磁碟驅動器是階層式命名空間,其中包含您電腦上的目錄和檔案。 FileSystem 磁碟驅動器可以是邏輯或平板磁碟驅動器、目錄或對應的網路共用。

FileSystem 提供者支援下列 Cmdlet,本文涵蓋這些 Cmdlet。

此提供者所公開的類型

檔案是 System.IO.FileInfo 類別的實例。 目錄是 System.IO.DirectoryInfo 類別的實例。

FileSystem 提供者會藉由將電腦上的任何邏輯磁碟驅動器對應為 PowerShell 磁碟驅動器來公開其數據存放區。 若要使用 FileSystem 磁碟驅動器,您可以將位置變更為磁碟驅動器名稱,後面接著冒號 (:) 。

Set-Location C:

您也可以從任何其他 PowerShell 磁碟驅動器使用 FileSystem 提供者。 若要從其他位置參考檔案或目錄,請使用路徑中的磁碟驅動器名稱 (C:D:...) 。

注意

PowerShell 會使用別名,讓您熟悉使用提供者路徑。 和 ls 之類的dir命令現在是 Get-ChildItem 的別名,cdSet-Location 的別名。 和 pwdGet-Location 的別名。

取得檔案和目錄

Cmdlet 會 Get-ChildItem 傳回目前位置中的所有檔案和目錄。 您可以指定要搜尋的不同路徑,並使用內建參數來篩選和控制遞歸深度。

Get-ChildItem

若要深入瞭解 Cmdlet 使用方式,請參閱 Get-ChildItem

複製檔案和目錄

Cmdlet Copy-Item 會將檔案和目錄複製到您指定的位置。 參數可用來篩選和遞歸,類似於 Get-ChildItem

下列命令會將路徑 「C:\temp」 下的所有檔案和目錄複製到資料夾 「C:\Windows\Temp」。。

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item 會覆寫目的地目錄中的檔案,而不提示確認。

此命令會將 a.txt 檔案從 C:\a 目錄 C:\a\bb 複製到 目錄。

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

將目錄中的所有目錄和檔案 C:\a 複製到 C:\c 目錄。 如果要複製的任一個目錄已經存在於目的地目錄中,除非您指定 Force 參數,否則此命令將會失敗。

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

如需詳細資訊,請參閱 Copy-Item

移動檔案和目錄

這個指令會將 c.txt 目錄中的 C:\a 檔案移至 C:\a\aa 目錄:

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

此命令將不會自動覆寫具有相同名稱的現有檔案。 若要強制此 Cmdlet 覆寫現有的檔案,請指定 Force 參數。

當目錄為目前位置時,您無法移動該目錄。 當您使用 Move-Item 在目前位置移動目錄時,您會看到此錯誤。

C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp

Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

管理檔案內容

取得檔案的內容

此命令會取得 「Test.txt」 檔案的內容,並在控制台中顯示它們。

Get-Content -Path Test.txt

您可以使用管線將檔案的內容傳送至其他 Cmdlet。 例如,下列命令會讀取檔案的內容 Test.txt ,然後提供它們做為 ConvertTo-Html Cmdlet 的輸入:

Get-Content -Path Test.txt | ConvertTo-Html

您也可以在檔案的提供者路徑前面加上貨幣符號 () $ 來擷取檔案的內容。 路徑必須以大括弧括住,因為變數命名限制。 如需詳細資訊,請參閱 about_Variables

${C:\Windows\System32\Drivers\etc\hosts}

將內容新增至檔案

此指令會將 「test content」 字串附加至 Test.txt 檔案:

Add-Content -Path test.txt -Value "test content"

檔案中的 Test.txt 現有內容不會刪除。

取代檔案的內容

這個指令會將檔案的內容 Test.txt 取代為「測試內容」字串:

Set-Content -Path test.txt -Value "test content"

它會覆寫 的內容 Test.txt。 您可以使用 New-Item Cmdlet 的 Value 參數,在建立檔案時將內容新增至檔案。

迴圈查看檔案的內容

根據預設, Get-Content Cmdlet 會使用行尾字元做為其分隔符,因此它會取得檔案做為字串集合,並將每一行當做檔案中的一個字元串。

您可以使用 -Delimiter 參數來指定替代分隔符。 如果您將它設定為代表某區段結尾或下一區段開頭的字元,就可以將檔案分割為邏輯部分。

第一個命令會 Employees.txt 取得檔案,並將其分割成區段,每個區段的結尾都是 “End of Employee Record” 字,並將它儲存在 變數中 $e

第二個命令會使用陣列表示法來取得 中集合 $e中的第一個專案。 它使用 0 的索引,因為 PowerShell 陣列是以零起始。

如需 Cmdlet 的詳細資訊 Get-Content ,請參閱 Get-Content 的說明主題。

如需數位的詳細資訊,請參閱 about_Arrays

$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

管理安全性描述項

檢視檔案的 ACL

此命令會傳回 System.Security.AccessControl.FileSecurity 物件:

Get-Acl -Path test.txt | Format-List -Property *

如需此物件的詳細資訊,請使用管線將命令傳送至 Get-Member Cmdlet。 或者,請參閱 FileSecurity 類別。

修改檔案的 ACL

Create 並設定檔案的 ACL

建立檔案和目錄

建立目錄

這個指令會在 logfiles 磁碟驅動器上 C 建立目錄:

New-Item -Path c:\ -Name logfiles -Type directory

PowerShell 也包含使用 mkdirNew-Item Cmdlet 建立新目錄的函式 (別名 md) 。

建立檔案

此命令會在 log2.txt 目錄中建立檔案 C:\logfiles ,然後將 「test log」 字串新增至檔案:

New-Item -Path c:\logfiles -Name log2.txt -Type file

建立具有內容的檔案

在目錄中建立名為 log2.txtC:\logfiles 檔案,並將字串 「test log」 新增至檔案。

New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"

重新命名檔案和目錄

重新命名檔案

這個指令會將 a.txt 目錄中的 C:\a 檔案重新命名為 b.txt

Rename-Item -Path c:\a\a.txt -NewName b.txt

重新命名目錄

這個指令會將 C:\a\cc 目錄重新命名為 C:\a\dd

Rename-Item -Path c:\a\cc -NewName dd

刪除檔案和目錄

刪除檔案

這個指令會 Test.txt 刪除目前目錄中的檔案:

Remove-Item -Path test.txt

使用通配符刪除檔案

這個指令會刪除目前目錄中延伸名為 .xml 的所有檔案:

Remove-Item -Path *.xml

叫用相關聯的檔案來啟動程式

叫用檔案

第一個命令會使用 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

取得具有指定屬性的檔案和資料夾

取得系統檔案

此命令會取得目前目錄及其子目錄中的系統檔案。

它會使用 -File 參數只取得 (不是目錄) 的檔案,而 -System 參數則只取得具有 「system」 屬性的專案。

它會使用 -Recurse 參數來取得目前目錄和所有子目錄中的專案。

Get-ChildItem -File -System -Recurse

取得隱藏的檔案

此命令會取得目前目錄中的所有檔案 (包括隱藏的檔案)。

它會使用 Attributes 參數搭配兩個值, !Directory+Hidden這個值會取得隱藏的檔案,以及 !Directory取得所有其他檔案。

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -att !d,!d+h 是這個命令的對等專案。

取得壓縮和加密的檔案

此命令會取得目前目錄中已壓縮或加密的檔案。

它會使用 -Attributes 參數搭配兩個值和 CompressedEncrypted。 這些值會以逗號 , 分隔,代表 「OR」 運算符。

Get-ChildItem -Attributes Compressed,Encrypted

動態參數

動態參數是PowerShell提供者新增的 Cmdlet 參數,只有在啟用提供者的磁碟驅動器中使用 Cmdlet 時才可使用。

編碼 <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

指定檔案的編碼方式。 預設值為 ASCII。

  • ASCII:使用 ASCII (7 位) 字元集的編碼方式。
  • BigEndianUnicode:使用 big-endian 位元組順序以 UTF-16 格式編碼。
  • 字串:使用字串的編碼類型。
  • Unicode:使用位元組由小到大的順序以UTF-16格式編碼。
  • UTF7:以UTF-7格式編碼。
  • UTF8:以UTF-8格式編碼。
  • UTF8BOM:使用位元組順序標記 (BOM) 以 UTF-8 格式編碼
  • UF8NOBOM:以UTF-8格式編碼,不含位元組順序標記 (BOM)
  • UTF32:以 UTF-32 格式編碼。
  • 預設值:在預設安裝的代碼頁中編碼。
  • OEM:使用 MS-DOS 和控制台程式的預設編碼方式。
  • 未知:編碼類型未知或無效。 資料可視為二進位檔。

支援的 Cmdlet

分隔符 <System.String>

指定分隔符號,讓 Get-Content 在讀取時可用來將檔案分割成物件。

預設值為 \n,這是行尾字元。

讀取文字檔時, Get-Content 會傳回字串物件的集合,每個物件都是以分隔符結尾。

輸入檔案中不存在的分隔符, Get-Content 會將整個檔案當做單一未分隔的對象傳回。

您可以使用這個參數,藉由指定檔案分隔符號 (例如 "End of Example") 做為分隔符號,將大型檔案分割成較小的檔案。 分隔符號會保留 (不會被捨棄),並成為每個檔案區段中的最後一個項目。

注意

目前,當 參數的值 -Delimiter 是空字串時, Get-Content 不會傳回任何專案。 這是已知的問題。 若要強制 Get-Content 以單一、未分隔的物件形式傳回整個檔案,請輸入檔案中不存在的值。

支援的 Cmdlet

等候 <System.Management.Automation.SwitchParameter>

等候要附加至檔案的內容。 如果內容已附加,就會傳回附加的內容。 如果內容已變更,則會傳回整個檔案。

等候時,Get-Content 每秒會檢查檔案一次,直到您中斷它為止,例如,按下 CTRL+C。

支援的 Cmdlet

Attributes <FlagsExpression>

取得具有指定屬性的檔案和資料夾。 此參數支援所有屬性,可讓您指定複雜的屬性組合。

參數-Attributes是在 Windows PowerShell 3.0 中引進的。

參數 -Attributes 支援下列屬性:

  • 封存
  • Compressed
  • 裝置
  • 目錄
  • 已加密
  • Hidden
  • 一般
  • NotContentIndexed
  • 離線
  • ReadOnly
  • ReparsePoint
  • 疏鬆File
  • 系統
  • 暫存

如需這些屬性的描述,請參閱 FileAttributes 列舉。

使用下列運算子來結合屬性。

  • ! -不
  • + -和
  • , -或

運算子和其屬性之間不允許有任何空格。 不過,逗號之前可以有空格。

支援的 Cmdlet

Directory <System.Management.Automation.SwitchParameter>

取得目錄 (資料夾)。

參數-Directory是在 Windows PowerShell 3.0 中引進的。

若要只取得目錄,請使用 -Directory 參數並省略 -File 參數。 若要排除目錄,請使用 -File 參數並省略 -Directory 參數,或使用 -Attributes 參數。

支援的 Cmdlet

File <System.Management.Automation.SwitchParameter>

取得檔案。

參數-File是在 Windows PowerShell 3.0 中引進的。

若要只取得檔案,請使用 -File 參數並省略 -Directory 參數。 若要排除檔案,請使用 -Directory 參數並省略 -File 參數,或使用 -Attributes 參數。

支援的 Cmdlet

隱藏 <System.Management.Automation.SwitchParameter>

只取得隱藏的檔案和目錄 (資料夾)。 根據預設, Get-ChildItem 只會取得非隱藏的專案。

參數-Hidden是在 Windows PowerShell 3.0 中引進的。

若要只取得隱藏的專案,請使用 -Hidden 參數、其 hah別名,或參數的 -AttributesHidden 值。 若要排除隱藏的專案,請省略 -Hidden 參數或使用 -Attributes 參數。

支援的 Cmdlet

ReadOnly <System.Management.Automation.SwitchParameter>

只取得唯讀的檔案和目錄 (資料夾)。

參數-ReadOnly是在 Windows PowerShell 3.0 中引進的。

若要只取得唯讀專案,請使用 -ReadOnly 參數、其ar別名或 參數的 -AttributesReadOnly 值。 若要排除唯讀專案,請使用 -Attributes 參數。

支援的 Cmdlet

System.Management.Automation.SwitchParameter <>

只取得系統檔案和目錄 (資料夾)。

參數-System是在 Windows PowerShell 3.0 中引進的。

若要只取得系統檔案和資料夾,請使用 -System 參數、其as別名或 參數的系統-Attributes值。 若要排除系統檔案和資料夾,請使用 -Attributes 參數。

支援的 Cmdlet

NewerThan <System.DateTime>

$True當檔案的值大於指定的日期時LastWriteTime,傳回 。 否則會傳回 $False

輸入 DateTime 物件,例如 Get-Date Cmdlet 傳回的物件,或可以轉換成 DateTime 物件的字串,例如 "August 10, 2011 2:00 PM"

支援的 Cmdlet

OlderThan <System.DateTime>

$True當檔案的值小於指定的日期時LastWriteTime,傳回 。 否則會傳回 $False

輸入 DateTime 物件,例如 Get-Date Cmdlet 傳回的物件,或可以轉換成 DateTime 物件的字串,例如 "August 10, 2011 2:00 PM"

支援的 Cmdlet

<Stream System.String>

管理替代資料流。 輸入資料流名稱。 只有在文件系統磁碟驅動器的 Get-ItemRemove-Item 命令中,才允許通配符。

支援的 Cmdlet

Raw <SwitchParameter>

忽略新行字元。 以單一項目形式傳回內容。

支援的 Cmdlet

ItemType <字串>

此參數可讓您指定要使用 建立的項目樣式 New-Item

此參數的可用值取決於您所使用的目前提供者。

FileSystem 磁碟驅動器中,允許下列值:

  • 檔案
  • 目錄
  • SymbolicLink
  • 接合
  • HardLink

支援的 Cmdlet

使用管線

提供者 Cmdlet 接受管線輸入。 您可以使用管線來簡化工作,方法是將提供者數據從一個 Cmdlet 傳送至另一個提供者 Cmdlet。 若要深入瞭解如何搭配提供者 Cmdlet 使用管線,請參閱本文中提供的 Cmdlet 參考。

取得說明

從 Windows PowerShell 3.0 開始,您可以取得提供者 Cmdlet 的自訂說明主題,這些主題說明這些 Cmdlet 在檔案系統磁碟機中的行為方式。

若要取得針對文件系統磁碟驅動器自定義的說明主題,請在檔案系統磁碟驅動器中執行 Get-Help 命令,或使用 -PathGet-Help 參數來指定檔案系統磁碟驅動器。

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

另請參閱

about_Providers