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.
Dostawca systemu plików obsługuje następujące polecenia cmdlet, które zostały omówione w tym artykule.
- Get-Location
- Ustaw lokalizację
- Get-Item
- Get-ChildItem
- Invoke-Item
- Przenieś element
- Nowy element
- Usuń element
- Get-ItemProperty
- Set-ItemProperty
- Wyczyść element
- Clear-ItemProperty
- Usuń element
- Remove-ItemProperty
- Get-Acl
- Zestaw listy Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Dodawanie zawartości
- Wyczyść zawartość
- Pobieranie zawartości
- Set-Content
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 HardLink
wartości , SymLink
, Junction
i 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
---- ------------- ------ ----
-a---l 6/8/2023 12:20 PM 0 winget.exe
Nawigowanie po dyskach systemu plików
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-ChildItem
elementu , cd
są aliasem dla elementu Set-Location
ls
. 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+Hidden
któ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 <FileSystemCmdletProviderEncoding>
Określa kodowanie pliku. Wartość domyślna to ASCII.
Ascii
Używa zestawu znaków ASCII (7-bitowego).BigEndianUnicode
Używa formatu UTF-16 z kolejnością bajtów big-endian.BigEndianUTF32
Używa formatu UTF-32 z kolejnością bajtów big-endian.Byte
Koduje zestaw znaków w sekwencji bajtów.Default
Używa kodowania odpowiadającego aktywnej stronie kodu systemu (zwykle ANSI).Oem
Używa kodowania odpowiadającego bieżącej stronie kodowej producenta OEM systemu.String
Tak samo jakUnicode
.Unicode
Używa formatu UTF-16 z kolejnością bajtów little-endian.Unknown
Tak samo jakUnicode
.UTF7
Używa protokołu UTF-7.UTF8
Używa protokołu UTF-8.UTF32
Używa formatu UTF-32 z kolejnością bajtów little-endian.
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 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
- Katalog
- Szyfrowane
- Ukryty
- 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-Item
polecenia .
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
- Połączenie
- 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: