Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Det här exemplet gäller endast för Windows-plattformar.
PowerShell använder substantivobjektet för att referera till objekt som finns på en PowerShell-enhet. När du hanterar PowerShell FileSystem-providern kan ett objekt vara en fil, en mapp eller PowerShell-enheten. Att lista och arbeta med dessa objekt är en viktig grundläggande uppgift i de flesta administrativa inställningar, så vi vill diskutera dessa uppgifter i detalj.
Räkna upp filer, mappar och registernycklar
Eftersom det är en sådan vanlig uppgift att hämta en samling objekt från en viss plats är cmdleten Get-ChildItem särskilt utformad för att returnera alla objekt som finns i en container, till exempel en mapp.
Om du vill returnera alla filer och mappar som finns direkt i mappen C:\Windowsskriver du:
PS> Get-ChildItem -Path C:\Windows
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-16 8:10 AM 0 0.log
-a--- 2005-11-29 3:16 PM 97 acc1.txt
-a--- 2005-10-23 11:21 PM 3848 actsetup.log
...
Listan ser ut ungefär som när du anger dir kommandot i cmd.exe, eller ls kommandot i ett UNIX-kommandogränssnitt.
Du kan utföra komplexa listor med hjälp av cmdletens Get-ChildItem parametrar. Du kan se cmdletens Get-ChildItem syntax genom att skriva:
Get-Command -Name Get-ChildItem -Syntax
Dessa parametrar kan blandas och matchas för att få mycket anpassade utdata.
Visa en lista över alla inneslutna objekt
Om du vill se både objekten i en Windows-mapp och alla objekt som finns i undermapparna använder du parametern Recurse för Get-ChildItem. Listan visar allt i Windows-mappen och objekten i dess undermappar. Till exempel:
PS> Get-ChildItem -Path C:\WINDOWS -Recurse
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 1852416 AcGenral.dll
...
Filtrera objekt efter namn
Om du bara vill visa namnen på objekt använder du parametern Namn för Get-Childitem:
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
Visa med två skäl dolda objekt
Objekt som är dolda i Utforskaren eller cmd.exe som inte visas i utdata från ett Get-ChildItem kommando. Om du vill visa dolda objekt använder du force-parametern för Get-ChildItem.
Till exempel:
Get-ChildItem -Path C:\Windows -Force
Den här parametern heter Force eftersom du med två skäl kan åsidosätta kommandots Get-ChildItem normala beteende. Force är en ofta använd parameter som tvingar fram en åtgärd som en cmdlet normalt inte skulle utföra, även om den inte kan utföra någon åtgärd som äventyrar systemets säkerhet.
Matchande objektnamn med jokertecken
Kommandot Get-ChildItem accepterar jokertecken i sökvägen till objekten som ska listas.
Eftersom jokerteckenmatchning hanteras av PowerShell-motorn använder alla cmdletar som accepterar jokertecken samma notation och har samma matchande beteende. Notationen för Jokertecken i PowerShell innehåller:
- Asterisk (
*) matchar noll eller fler förekomster av något tecken. - Frågetecken (
?) matchar exakt ett tecken. - Vänster hakparentes (
[) och höger hakparentes (]) omger en uppsättning tecken som ska matchas.
Här följer några exempel på hur jokerteckenspecifikationen fungerar.
Om du vill hitta alla filer i Windows-katalogen med suffixet .log och exakt fem tecken i basnamnet anger du följande kommando:
PS> Get-ChildItem -Path C:\Windows\?????.log
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
...
-a--- 2006-05-11 6:31 PM 204276 ocgen.log
-a--- 2006-05-11 6:31 PM 22365 ocmsn.log
...
-a--- 2005-11-11 4:55 AM 64 setup.log
-a--- 2005-12-15 2:24 PM 17719 VxSDM.log
...
Om du vill hitta alla filer som börjar med bokstaven x i Windows-katalogen skriver du:
Get-ChildItem -Path C:\Windows\x*
Om du vill hitta alla filer vars namn börjar med "x" eller "z" skriver du:
Get-ChildItem -Path C:\Windows\[xz]*
Mer information om jokertecken finns i about_Wildcards.
Exkluderande poster
Du kan exkludera specifika objekt med parametern Exkludera i Get-ChildItem. På så sätt kan du utföra komplex filtrering i en enda instruktion.
Anta till exempel att du försöker hitta DLL:n för Windows-tidstjänsten i mappen System32 , och allt du kan komma ihåg om DLL-namnet är att den börjar med "W" och har "32" i sig.
Ett uttryck som w*32*.dll hittar alla DLL:er som uppfyller villkoren, men du kanske vill filtrera bort filerna ytterligare och utelämna alla win32-filer. Du kan utelämna dessa filer med hjälp av parametern Exkludera med mönstret win*:
PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude win*
Directory: C:\WINDOWS\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 3/18/2019 9:43 PM 495616 w32time.dll
-a--- 3/18/2019 9:44 PM 35328 w32topl.dll
-a--- 1/24/2020 5:44 PM 401920 Wldap32.dll
-a--- 10/10/2019 5:40 PM 442704 ws2_32.dll
-a--- 3/18/2019 9:44 PM 66048 wsnmp32.dll
-a--- 3/18/2019 9:44 PM 18944 wsock32.dll
-a--- 3/18/2019 9:44 PM 64792 wtsapi32.dll
Blanda Parametrar för Get-ChildItem
Du kan använda flera av parametrarna för cmdleten Get-ChildItem i samma kommando. Innan du blandar parametrar måste du vara säker på att du förstår jokerteckenmatchning. Följande kommando returnerar till exempel inga resultat:
Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll
Det finns inga resultat, även om det finns två DLL:er som börjar med bokstaven "z" i Windows-mappen.
Inga resultat returnerades eftersom vi angav jokertecknet som en del av sökvägen. Även om kommandot var rekursivt begränsade cmdleten Get-ChildItem objekten till de som finns i Windows-mappen med namn som slutar med .dll.
Om du vill ange en rekursiv sökning efter filer vars namn matchar ett särskilt mönster använder du parametern Inkludera .
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\Setup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 8261 zoneoc.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 337920 zipfldr.dll