about_FileSystem_Provider

Nazwa dostawcy

System plików

Dyski

C:, , D:Temp: ...

Możliwości

Filter, ShouldProcess

Krótki opis

Zapewnia dostęp do plików i katalogów.

Szczegółowy opis

Dostawca systemu plików programu PowerShell umożliwia pobieranie, dodawanie, zmienianie, czyszczenie i usuwanie plików i katalogów w programie PowerShell.

Dyski systemu plików to hierarchiczna przestrzeń nazw zawierająca katalogi i pliki na komputerze. Dysk systemu plików może być dyskem logicznym, fizycznym, katalogiem lub zamapowanym udziałem sieciowym.

Począwszy od programu PowerShell w wersji 7.0, dysk o nazwie TEMP: jest mapowany na tymczasową ścieżkę katalogu użytkownika. Program PowerShell używa metody .NET GetTempPath(), aby określić lokalizację folderu tymczasowego. W systemie Windows lokalizacja jest taka sama jak $env:TEMP. W systemach innych niż Windows lokalizacja jest taka sama jak $env:TMPDIR zmienna środowiskowa lub /tmp jeśli zmienna środowiskowa nie jest zdefiniowana.

Dostawca systemu plików obsługuje następujące polecenia cmdlet, które zostały omówione w tym artykule.

Typy uwidocznione przez tego dostawcę

Pliki to wystąpienia klasy System.IO.FileInfo . Katalogi to wystąpienia klasy System.IO.DirectoryInfo .

System rozszerzonego typu programu PowerShell dodaje dodatkowe właściwości do tych typów obiektów w celu dostarczenia dodatkowych informacji. Niektóre informacje są specyficzne dla platformy. Na przykład możliwe wartości właściwości LinkType zależą od używanej platformy i systemu plików. Systemy plików z systemami linux i macOS obsługują systemy HardLink plików i SymLink. System Windows NTFS obsługuje HardLinkwartości , SymLink, Junctioni kilka innych dla parametru LinkType.

W przypadku użycia Get-Item elementu połączonego lub Get-ChildItem do informacji o połączonym elemencie właściwość Mode zawiera element wskazujący l , że element jest łączem. Właściwość LinkType zawiera typ łącza.

AppExecLink linki są tworzone podczas instalowania aplikacji ze sklepu Microsoft Store. W przypadku AppExecLink linków system Windows nie udostępnia wartości właściwości LinkType lub LinkTarget .

Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe

    Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

Dostawca systemu plików uwidacznia swoje magazyny danych, mapując wszystkie dyski logiczne na komputerze jako dyski programu PowerShell. Aby pracować z dyskiem FileSystem , możesz zmienić lokalizację na dysk przy użyciu nazwy dysku, po którym następuje dwukropek (:).

Set-Location C:

Możesz również pracować z dostawcą systemu plików z dowolnego innego dysku programu PowerShell. Aby odwołać się do pliku lub katalogu z innej lokalizacji, użyj nazwy dysku (C:, D:, ...) w ścieżce.

Uwaga

Program PowerShell używa aliasów, aby umożliwić ci znaną pracę ze ścieżkami dostawcy. Polecenia takie jak dir i są teraz aliasami dla Get-ChildItemelementu , cd są aliasem dla elementu Set-Locationls . i pwd jest aliasem dla elementu Get-Location.

Pobieranie plików i katalogów

Polecenie Get-ChildItem cmdlet zwraca wszystkie pliki i katalogi w bieżącej lokalizacji. Możesz określić inną ścieżkę do wyszukiwania i użyć wbudowanych parametrów do filtrowania i kontrolowania głębokości rekursji.

Get-ChildItem

Aby dowiedzieć się więcej na temat użycia poleceń cmdlet, zobacz Get-ChildItem.

Kopiowanie plików i katalogów

Polecenie Copy-Item cmdlet kopiuje pliki i katalogi do określonej lokalizacji. Parametry są dostępne do filtrowania i powtarzania, podobnie jak Get-ChildItem.

Następujące polecenie kopiuje wszystkie pliki i katalogi w ścieżce C:\temp\ do folderu C:\Windows\Temp.

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

Copy-Item zastępuje pliki w katalogu docelowym bez monitowania o potwierdzenie.

To polecenie kopiuje a.txt plik z C:\a katalogu do C:\a\bb katalogu.

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

Kopiuje wszystkie katalogi i pliki w C:\a katalogu do C:\c katalogu. Jeśli którykolwiek z katalogów do skopiowania już istnieje w katalogu docelowym, polecenie zakończy się niepowodzeniem, chyba że określisz parametr Force .

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

Aby uzyskać więcej informacji, zobacz Copy-Item (Kopiuj element).

Przenoszenie plików i katalogów

To polecenie przenosi c.txt plik w C:\a katalogu do C:\a\aa katalogu:

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

Domyślnie polecenie cmdlet nie zastępuje istniejącego pliku o tej samej nazwie. Aby wymusić zastąpienie istniejącego pliku polecenia cmdlet, określ parametr Force .

Nie można przenieść katalogu, gdy ten katalog jest bieżącą lokalizacją. Gdy używasz Move-Item polecenia , aby przenieść katalog w bieżącej lokalizacji, zostanie wyświetlony ten błąd.

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

Zarządzanie zawartością pliku

Pobieranie zawartości pliku

To polecenie pobiera zawartość pliku "Test.txt" i wyświetla je w konsoli programu .

Get-Content -Path Test.txt

Możesz przekazać zawartość pliku do innego polecenia cmdlet. Na przykład następujące polecenie odczytuje zawartość Test.txt pliku, a następnie dostarcza je jako dane wejściowe do polecenia cmdlet ConvertTo-Html :

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

Zawartość pliku można również pobrać, prefiksując ścieżkę dostawcy za pomocą znaku dolara ($). Ścieżka musi być ujęta w nawiasy klamrowe z powodu ograniczeń nazewnictwa zmiennych. Aby uzyskać więcej informacji, zobacz about_Variables.

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

Dodawanie zawartości do pliku

To polecenie dołącza ciąg "testowej zawartości" do Test.txt pliku:

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

Istniejąca zawartość w Test.txt pliku nie jest usuwana.

Zastępowanie zawartości pliku

To polecenie zastępuje zawartość Test.txt pliku ciągiem "test content":

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

Zastępuje zawartość elementu Test.txt. Możesz użyć parametru New-Item Value polecenia cmdlet, aby dodać zawartość do pliku podczas jego tworzenia.

Pętla przez zawartość pliku

Domyślnie Get-Content polecenie cmdlet używa znaku końca wiersza jako ogranicznika, więc pobiera plik jako kolekcję ciągów, z każdym wierszem jako jednym ciągiem w pliku.

Możesz użyć parametru ogranicznika , aby określić ogranicznik alternatywny. Jeśli ustawisz go na znaki, które oznaczają koniec sekcji lub początek następnej sekcji, możesz podzielić plik na części logiczne.

Pierwsze polecenie pobiera Employees.txt plik i dzieli go na sekcje, z których każda kończy się wyrazem "Koniec rekordu pracownika" i zapisuje go w zmiennej $e .

Drugie polecenie używa notacji tablicy, aby uzyskać pierwszy element w kolekcji w pliku $e. Używa ona indeksu 0, ponieważ tablice programu PowerShell są oparte na zera.

Aby uzyskać więcej informacji o Get-Content poleceniu cmdlet, zobacz temat pomocy dla programu Get-Content.

Aby uzyskać więcej informacji na temat tablic, zobacz about_Arrays.

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

Zarządzanie deskryptorami zabezpieczeń

Wyświetlanie listy ACL dla pliku

To polecenie zwraca obiekt System.Security.AccessControl.FileSecurity :

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

Aby uzyskać więcej informacji na temat tego obiektu, należy przekazać polecenie do polecenia cmdlet Get-Member lub zobacz klasę FileSecurity .

Tworzenie plików i katalogów

Tworzenie katalogu

To polecenie tworzy logfiles katalog na C dysku:

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

Program PowerShell zawiera mkdir również funkcję (alias md), która używa New-Item polecenia cmdlet do utworzenia nowego katalogu.

Tworzenie pliku

To polecenie tworzy log2.txt plik w C:\logfiles katalogu, a następnie dodaje ciąg "dziennika testowego" do pliku:

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

Tworzenie pliku z zawartością

Tworzy plik o nazwie log2.txt w C:\logfiles katalogu i dodaje do pliku ciąg "dziennik testowy".

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

Zmienianie nazw plików i katalogów

Zmienianie nazwy pliku

To polecenie zmienia nazwę a.txt pliku w C:\a katalogu na b.txt:

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

Zmienianie nazwy katalogu

To polecenie zmienia nazwę C:\a\cc katalogu na C:\a\dd:

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

Usuwanie plików i katalogów

Usuwanie pliku

To polecenie usuwa Test.txt plik w bieżącym katalogu:

Remove-Item -Path test.txt

Usuwanie plików przy użyciu symboli wieloznacznych

To polecenie usuwa wszystkie pliki w bieżącym katalogu, które mają .xml rozszerzenie nazwy pliku:

Remove-Item -Path *.xml

Uruchamianie programu przez wywołanie skojarzonego pliku

Wywoływanie pliku

Polecenie cmdlet Get-Service , aby uzyskać informacje o usługach lokalnych i potokuje informacje do polecenia cmdlet Export-Csv w celu przechowywania informacji w Services.csv pliku.

Następnie invoke-item otwiera services.csv plik w programie skojarzonym z .csv rozszerzeniem:

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

Pobieranie plików i folderów z określonymi atrybutami

Pobieranie plików systemowych

To polecenie pobiera pliki systemowe w bieżącym katalogu i jego podkatalogach.

Używa parametru File do pobierania tylko plików (nie katalogów) i parametru System , aby uzyskać tylko elementy z atrybutem "system".

Używa parametru Recurse w celu pobrania elementów w bieżącym katalogu i wszystkich podkatalogach.

Get-ChildItem -File -System -Recurse

Pobieranie ukrytych plików

To polecenie pobiera wszystkie pliki, w tym ukryte pliki, w bieżącym katalogu.

Używa parametru Atrybuty z dwiema wartościami , !Directory+Hiddenktóre pobierają ukryte pliki i !Directory, które pobierają wszystkie inne pliki.

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

dir -att !d,!d+h jest odpowiednikiem tego polecenia.

Pobieranie skompresowanych i zaszyfrowanych plików

To polecenie pobiera pliki w bieżącym katalogu, które są skompresowane lub zaszyfrowane.

Używa parametru Atrybuty z dwiema wartościami Compressed i Encrypted. Wartości są oddzielone przecinkiem , reprezentującym operator "OR".

Get-ChildItem -Attributes Compressed,Encrypted

Parametry dynamiczne

Parametry dynamiczne to parametry poleceń cmdlet, które są dodawane przez dostawcę programu PowerShell i są dostępne tylko wtedy, gdy polecenie cmdlet jest używane na dysku obsługującym dostawcę.

Kodowanie kodowania <>

Określa kodowanie pliku. Wartość domyślna to ASCII.

  • ascii: używa kodowania dla zestawu znaków ASCII (7-bitowych).
  • bigendianunicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów big-endian.
  • bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian.
  • oem: używa domyślnego kodowania dla programów MS-DOS i konsoli.
  • unicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów little-endian.
  • utf7: Koduje w formacie UTF-7.
  • utf8: Koduje w formacie UTF-8.
  • utf8BOM: Koduje w formacie UTF-8 za pomocą języka Byte Order Mark (BOM)
  • utf8NoBOM: Koduje w formacie UTF-8 bez znaku kolejności bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Obsługiwane polecenia cmdlet

  • Add-Content
  • Get-Content
  • Set-Content

Ciąg ogranicznika <>

Określa ogranicznik używany Get-Content do dzielenia pliku na obiekty podczas jego odczytu.

Wartość domyślna to \n, znak końca wiersza.

Podczas odczytywania pliku Get-Content tekstowego zwraca kolekcję obiektów ciągów, z których każdy kończy się znakiem ogranicznika.

Wprowadzenie ogranicznika, który nie istnieje w pliku, Get-Content zwraca cały plik jako pojedynczy, nieograniczony obiekt.

Za pomocą tego parametru można podzielić duży plik na mniejsze pliki, określając separator plików, taki jak "Koniec przykładu", jako ogranicznik. Ogranicznik jest zachowywany (nie jest odrzucany) i staje się ostatnim elementem w każdej sekcji pliku.

Uwaga

Obecnie, gdy wartość parametru ogranicznika jest pustym ciągiem, Get-Content nic nie zwraca. Jest to znany problem. Aby wymusić Get-Content zwrócenie całego pliku jako pojedynczego, niekwalifikowanego ciągu, wprowadź wartość, która nie istnieje w pliku.

Obsługiwane polecenia cmdlet

  • Get-Content

Parametr przełącznika oczekiwania <>

Czeka na dołączenie zawartości do pliku. Jeśli zawartość jest dołączana, zwraca dołączona zawartość. Jeśli zawartość została zmieniona, zwraca cały plik.

Podczas oczekiwania Get-Content sprawdza plik raz na sekundę do momentu przerwania go, na przykład przez naciśnięcie klawiszy CTRL+C.

Obsługiwane polecenia cmdlet

  • Get-Content

Flagi atrybutówExpression <>

Pobiera pliki i foldery z określonymi atrybutami. Ten parametr obsługuje wszystkie atrybuty i umożliwia określenie złożonych kombinacji atrybutów.

Parametr Attributes został wprowadzony w programie Windows PowerShell 3.0.

Parametr Attributes obsługuje następujące atrybuty:

  • Archiwizowanie
  • Skompresowane
  • Device
  • Katalogu
  • Szyfrowane
  • Ukryte
  • Normalne
  • NotContentIndexed
  • Offline
  • ReadOnly
  • ReparsePoint
  • Plik rozrzedny
  • Zadania systemowe
  • Tymczasowe

Aby uzyskać opis tych atrybutów, zobacz wyliczenie FileAttributes .

Użyj następujących operatorów, aby połączyć atrybuty.

  • ! -NIE
  • + -I
  • , -LUB

Żadne spacje nie są dozwolone między operatorem a jego atrybutem. Jednak spacje są dozwolone przed przecinkami.

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Parametr przełącznika katalogu <>

Pobiera katalogi (foldery).

Parametr Katalogu został wprowadzony w programie Windows PowerShell 3.0.

Aby uzyskać tylko katalogi, użyj parametru Katalog i pomiń parametr File. Aby wykluczyć katalogi, użyj parametru File i pomiń parametr Directory lub użyj parametru Atrybuty.

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Parametr przełącznika plików <>

Pobiera pliki.

Parametr File został wprowadzony w programie Windows PowerShell 3.0.

Aby pobrać tylko pliki, użyj parametru File i pomiń parametr Directory. Aby wykluczyć pliki, użyj parametru Katalog i pomiń parametr File lub użyj parametru Atrybuty.

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Ukryty <przełącznikParametr>

Pobiera tylko ukryte pliki i katalogi (foldery). Domyślnie Get-ChildItem pobiera tylko nieukryte elementy.

Parametr Hidden został wprowadzony w programie Windows PowerShell 3.0.

Aby uzyskać tylko ukryte elementy, użyj parametru Hidden , jego h lub ah aliasu albo wartości Ukryte parametru Atrybuty . Aby wykluczyć ukryte elementy, pomiń parametr Ukryty lub użyj parametru Atrybuty .

Obsługiwane polecenia cmdlet

  • Get-ChildItem

ReadOnly <SwitchParameter>

Pobiera tylko pliki i katalogi tylko do odczytu (foldery).

Parametr ReadOnly został wprowadzony w programie Windows PowerShell 3.0.

Aby uzyskać tylko elementy tylko do odczytu, użyj parametru ReadOnly , jego ar aliasu lub wartości ReadOnly parametru Atrybuty . Aby wykluczyć elementy tylko do odczytu, użyj parametru Atrybuty .

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Przełącznik systemowyParametr <>

Pobiera tylko pliki systemowe i katalogi (foldery).

Parametr System został wprowadzony w programie Windows PowerShell 3.0.

Aby uzyskać tylko pliki systemowe i foldery, użyj parametru System , jego as aliasu lub wartości System parametru Atrybuty . Aby wykluczyć pliki systemowe i foldery, użyj parametru Atrybuty .

Obsługiwane polecenia cmdlet

  • Get-ChildItem

NowszyThan <DateTime>

Zwraca $True wartość, gdy LastWriteTime wartość pliku jest większa niż określona data. W przeciwnym razie zwraca wartość $False.

Wprowadź obiekt DateTime, taki jak obiekt zwracany przez polecenie cmdlet Get-Date lub ciąg, który można przekonwertować na obiekt DateTime, taki jak "August 10, 2011 2:00 PM".

Obsługiwane polecenia cmdlet

StarszyThan <DateTime>

Zwraca $True wartość, gdy LastWriteTime wartość pliku jest mniejsza niż określona data. W przeciwnym razie zwraca wartość $False.

Wprowadź obiekt DateTime, taki jak obiekt zwracany przez Get-Date polecenie cmdlet lub ciąg, który można przekonwertować na obiekt DateTime, taki jak "August 10, 2011 2:00 PM".

Obsługiwane polecenia cmdlet

  • Test-Path

Ciąg strumienia <>

Zarządza alternatywnymi strumieniami danych. Wprowadź nazwę strumienia. Symbole wieloznaczne są dozwolone tylko dla Get-Item poleceń i Remove-Item na dysku systemu plików.

Obsługiwane polecenia cmdlet

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

Raw SwitchParameter (Parametr przełącznika nieprzetworzonego <)>

Ignoruje znaki nowego wiersza. Zwraca zawartość jako pojedynczy element.

Obsługiwane polecenia cmdlet

  • Get-Content

Ciąg ItemType <>

Ten parametr umożliwia określenie typu elementu do utworzenia za pomocą New-Itempolecenia .

Dostępne wartości tego parametru zależą od bieżącego dostawcy, którego używasz.

FileSystem Na dysku dozwolone są następujące wartości:

  • Plik
  • Katalog
  • Link symboliczny
  • Skrzyżowaniu
  • HardLink

Obsługiwane polecenia cmdlet

  • New-Item

Korzystanie z potoku

Polecenia cmdlet dostawcy akceptują dane wejściowe potoku. Potok umożliwia uproszczenie zadania, wysyłając dane dostawcy z jednego polecenia cmdlet do innego dostawcy. Aby dowiedzieć się więcej na temat używania potoku z poleceniami cmdlet dostawcy, zobacz odwołania do poleceń cmdlet podanych w tym artykule.

Uzyskiwanie pomocy

Począwszy od programu Windows PowerShell 3.0, możesz uzyskać dostosowane tematy pomocy dla poleceń cmdlet dostawcy, które wyjaśniają, jak te polecenia cmdlet zachowują się na dysku systemu plików.

Aby uzyskać tematy pomocy dostosowane dla dysku systemu plików, uruchom polecenie Get-Help na dysku systemu plików lub użyj parametru Path w Get-Help celu określenia dysku systemu plików.

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

Zobacz też