Udostępnij za pośrednictwem


about_FileSystem_Provider

Nazwa dostawcy

FileSystem

Napędy

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ć dyskiem logicznym lub fizycznym, katalogiem lub mapowanym 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 GetTempPath() platformy .NET do określenia lokalizacji 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 są wystąpieniami 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 udostępnienia 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 PLIKÓW NTFS systemu Windows obsługuje HardLinkwartości , SymLink, Junctioni kilka innych dla parametru LinkType.

Jeśli używasz Get-Item elementu połączonego lub Get-ChildItem do informacji o elemencie połączonym, właściwość Mode zawiera wartość , l aby wskazać, ż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 systemu plików , 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ć znajomą pracę ze ścieżkami dostawcy. Polecenia takie jak dir i są teraz aliasami dla Get-ChildItemelementu , cd są aliasem dla polecenia Set-Locationls . i pwd jest aliasem dla .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żywania 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 rekursji, 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 przez polecenie 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.

Get-Content -Path Test.txt

Zawartość pliku można przekazać 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 jego ścieżkę dostawcy za pomocą znaku dolara ($). Ścieżka musi być ujęta w nawiasy klamrowe ze względu na ograniczenia nazw 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 "test content" 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 "zawartość testowa":

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

Zastępuje zawartość elementu Test.txt. Możesz użyć parametru New-ItemValue 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ć alternatywny ogranicznik. 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 zerowym kodzie.

Aby uzyskać więcej informacji na temat Get-Content polecenia cmdlet, zobacz temat pomocy dla elementu 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 zobaczyć 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 "dziennik testowy" do pliku:

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

Twórca pliku z zawartością

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

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 .csv z 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 pobrać tylko elementy z atrybutem "system".

Używa parametru Recurse do pobierania 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óra pobiera ukryte pliki i !Directory, który pobiera 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ą rozdzielane 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 konsolowych.
  • 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ą znacznika kolejności bajtów (BOM)
  • utf8NoBOM: Koduje w formacie UTF-8 bez znaku zamówienia 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, który Get-Content używa do dzielenia pliku na obiekty podczas odczytywania.

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.

Wprowadzanie 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, niezaliczonego ciągu, wprowadź wartość, która nie istnieje w pliku.

Obsługiwane polecenia cmdlet

  • Get-Content

Przełącznik oczekiwaniaParametr <>

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 Atrybuty został wprowadzony w Windows PowerShell 3.0.

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

  • Archiwum
  • Skompresowane
  • Urządzenie
  • Directory
  • Zaszyfrowane
  • Ukryty
  • Normalne
  • NotContentIndexed
  • Tryb offline
  • Readonly
  • ReparsePoint
  • Rozrzed ściętego pliku
  • System
  • 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 Directory został wprowadzony w 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 Attributes .

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Parametr przełącznika plików <>

Pobiera pliki.

Parametr File został wprowadzony w Windows PowerShell 3.0.

Aby uzyskać 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

Parametr przełącznika ukrytego <>

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

Parametr Hidden został wprowadzony w Windows PowerShell 3.0.

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

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Parametr przełącznika tylko do <odczytu>

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

Parametr ReadOnly został wprowadzony w Windows PowerShell 3.0.

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

Obsługiwane polecenia cmdlet

  • Get-ChildItem

Parametr przełącznika systemu <>

Pobiera tylko pliki systemowe i katalogi (foldery).

Parametr System został wprowadzony w 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ć systemowe pliki i foldery, użyj parametru Atrybuty .

Obsługiwane polecenia cmdlet

  • Get-ChildItem

NewerThan <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

Starsza niż <data/godzina>

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 Stream>

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

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:

  • File
  • Directory
  • Łącze symboliczne
  • Połączenie
  • Link twardy

Obsługiwane polecenia cmdlet

  • New-Item

Korzystanie z potoku

Polecenia cmdlet dostawcy akceptują dane wejściowe potoku. Potok pozwala uprościć zadanie, 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 dokumentację poleceń cmdlet podanych w tym artykule.

Uzyskiwanie pomocy

Począwszy od Windows PowerShell 3.0, można 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ż