Werken met bestanden, mappen en registersleutelsWorking With Files, Folders and Registry Keys

Windows PowerShell maakt gebruik van het zelfstandig naamwoord Item om te verwijzen naar objecten gevonden op een Windows PowerShell-station.Windows PowerShell uses the noun Item to refer to items found on a Windows PowerShell drive. Het bestandssysteem van Windows PowerShell-provider betreft een Item mogelijk een bestand, een map of het Windows PowerShell-station.When dealing with the Windows PowerShell FileSystem provider, an Item might be a file, a folder, or the Windows PowerShell drive. Aanbieding van en werken met de volgende items is een kritieke basic taak in de meeste beheerinstellingen, zodat we willen deze taken in detail behandeld.Listing and working with these items is a critical basic task in most administrative settings, so we want to discuss these tasks in detail.

Het inventariseren van bestanden, mappen en registersleutels (Get-ChildItem)Enumerating Files, Folders, and Registry Keys (Get-ChildItem)

Omdat een verzameling items ophalen uit een bepaalde locatie een algemene taak is, de Get-ChildItem cmdlet is speciaal ontworpen om te retourneren van alle items gevonden binnen een container, zoals een map.Since getting a collection of items from a particular location is such a common task, the Get-ChildItem cmdlet is designed specifically to return all items found within a container such as a folder.

Als u wilt retourneren van alle bestanden en mappen die zijn opgenomen in de map C: rechtstreeks\Windows, type:If you want to return all files and folders that are contained directly within the folder C:\Windows, type:

PS> Get-ChildItem -Path C:\Windows
    Directory: Microsoft.Windows 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
...

De aanbieding lijkt op wat u ziet wanneer u de dir opdracht in Cmd.exe, of de ls opdracht in een UNIX-opdrachtshell.The listing looks similar to what you would see when you enter the dir command in Cmd.exe, or the ls command in a UNIX command shell.

U kunt zeer complexe aanbiedingen uitvoeren met behulp van de parameters van de Get-ChildItem cmdlet.You can perform very complex listings by using parameters of the Get-ChildItem cmdlet. Kijken we enkele scenario's naast.We will look at a few scenarios next. Ziet u de syntaxis van de Get-ChildItem cmdlet door te typen:You can see the syntax the Get-ChildItem cmdlet by typing:

Get-Command -Name Get-ChildItem -Syntax

Deze parameters kunnen worden gecombineerd en worden aangepast om zeer aangepaste uitvoer te halen.These parameters can be mixed and matched to get highly customized output.

Lijst van alle opgenomen Items (-Recurse)Listing all Contained Items (-Recurse)

Als zowel de items in een Windows-map en alle items die deel uitmaken van de submappen wilt weergeven, gebruikt de Recurse parameter van Get-ChildItem.To see both the items inside a Windows folder and any items that are contained within the subfolders, use the Recurse parameter of Get-ChildItem. De aanbieding wordt alles weergegeven in de Windows-map en de items in de submappen ervan.The listing displays everything within the Windows folder and the items in its subfolders. Bijvoorbeeld:For example:

PS> Get-ChildItem -Path C:\WINDOWS -Recurse

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM    1852416 AcGenral.dll
...

Items met de naam filteren (-naam)Filtering Items by Name (-Name)

Alleen de namen van items weergegeven, gebruikt u de naam parameter van Get-Childitem:To display only the names of items, use the Name parameter of Get-Childitem:

PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...

Geforceerd verborgen Items weergeven (-Force)Forcibly Listing Hidden Items (-Force)

Items die normaal gesproken niet zichtbaar in Windows Verkenner of Cmd.exe zijn worden niet weergegeven in de uitvoer van een Get-ChildItem opdracht.Items that are normally invisible in File Explorer or Cmd.exe are not displayed in the output of a Get-ChildItem command. U verborgen items weergeven met behulp de Force parameter van Get-ChildItem.To display hidden items, use the Force parameter of Get-ChildItem. Bijvoorbeeld:For example:

Get-ChildItem -Path C:\Windows -Force

Deze parameter is met de naam Force omdat kunt u de normale werking van geforceerd overschrijven de Get-ChildItem opdracht.This parameter is named Force because you can forcibly override the normal behavior of the Get-ChildItem command. Force is een veelgebruikte parameter dat ervoor zorgt een actie die een cmdlet niet normaal kunt uitvoeren, dat hoewel een actie op die de beveiliging van het systeem wordt aangetast wordt niet uitgevoerd.Force is a widely used parameter that forces an action that a cmdlet would not normally perform, although it will not perform any action that compromises the security of the system.

Overeenkomende itemnamen met jokertekensMatching Item Names with Wildcards

De Get-ChildItem opdracht accepteert jokertekens in het pad van de items om weer te geven.The Get-ChildItem command accepts wildcards in the path of the items to list.

Omdat met jokertekens worden verwerkt door de Windows PowerShell-engine, alle cmdlets die jokertekens accepteert de dezelfde notatie hebben en hetzelfde gedrag overeenkomende hebt.Because wildcard matching is handled by the Windows PowerShell engine, all cmdlets that accepts wildcards use the same notation and have the same matching behavior. De Windows PowerShell-notatie hebben jokertekens bevat:The Windows PowerShell wildcard notation includes:

  • Sterretje (*) komt overeen met nul of meer exemplaren van een willekeurig teken.Asterisk (*)matches zero or more occurrences of any character.

  • Vraagteken (?) komt overeen met precies één teken.Question mark (?) matches exactly one character.

  • Vierkante linkerhaak ([) en vierkante rechterhaak (]) teken rond een reeks tekens worden vergeleken.Left bracket ([) character and right bracket (]) character surround a set of characters to be matched.

Hier volgen enkele voorbeelden van de werking van de specificatie van het jokerteken.Here are some examples of how wildcard specification works.

Als u alle bestanden in de Windows-map met het achtervoegsel .log en exact vijf tekens in de basisnaam, voer de volgende opdracht:To find all files in the Windows directory with the suffix .log and exactly five characters in the base name, enter the following command:

PS> Get-ChildItem -Path C:\Windows\?????.log

    Directory: Microsoft.Windows 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
...

Als u alle bestanden die met de letter beginnen x Typ in de Windows-map:To find all files that begin with the letter x in the Windows directory, type:

Get-ChildItem -Path C:\Windows\x*

Als u alle bestanden waarvan de naam met begint x of z, type:To find all files whose names begin with x or z, type:

Get-ChildItem -Path C:\Windows\[xz]*

Items uitsluiten (-uitsluiten)Excluding Items (-Exclude)

U kunt specifieke items uitsluiten door de uitsluiten parameter van Get-ChildItem.You can exclude specific items by using the Exclude parameter of Get-ChildItem. Hiermee kunt u complexe filteren in één instructie uitvoeren.This lets you perform complex filtering in a single statement.

Stel dat u wilt zoeken naar het DLL-bestand van Windows Time-Service in de map System32 en alle makkelijk te onthouden over de naam van het DLL-bestand is dat het begint met de letter "W" en '32' bevat.For example, suppose you are trying to find the Windows Time Service DLL in the System32 folder, and all you can remember about the DLL name is that it begins with "W" and has "32" in it.

Een expressie, zoals w* 32*. DLL-bestand vindt u alle dll-bestanden die voldoen aan de voorwaarden, maar er kan ook de Windows 95 en 16-bits Windows compatibiliteit dll-bestanden met '95' of '16' geretourneerd in hun naam.An expression like w*32*.dll will find all DLLs that satisfy the conditions, but it may also return the Windows 95 and 16-bit Windows compatibility DLLs that include "95" or "16" in their names. U kunt bestanden met een van deze getallen in hun namen met behulp van weglaten de uitsluiten parameter met het patroon *[ 9516]*:You can omit files that have any of these numbers in their names by using the Exclude parameter with the pattern *[9516]*:

PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude *[9516]*

Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\System32
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     174592 w32time.dll
-a---        2004-08-04   8:00 AM      22016 w32topl.dll
-a---        2004-08-04   8:00 AM     101888 win32spl.dll
-a---        2004-08-04   8:00 AM     172032 wldap32.dll
-a---        2004-08-04   8:00 AM     264192 wow32.dll
-a---        2004-08-04   8:00 AM      82944 ws2_32.dll
-a---        2004-08-04   8:00 AM      42496 wsnmp32.dll
-a---        2004-08-04   8:00 AM      22528 wsock32.dll
-a---        2004-08-04   8:00 AM      18432 wtsapi32.dll

De combinatie van Parameters voor Get-ChildItemMixing Get-ChildItem Parameters

U kunt verschillende van de parameters van de Get-ChildItem cmdlet in dezelfde opdracht.You can use several of the parameters of the Get-ChildItem cmdlet in the same command. Voordat u parameters mengen, moet u dat u bekend met jokertekens bent.Before you mix parameters, be sure that you understand wildcard matching. De volgende opdracht wordt bijvoorbeeld geen resultaten oplevert:For example, the following command returns no results:

Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll

Er zijn geen resultaten, zelfs als er zijn twee dll's die met de letter "z" in de Windows-map beginnen.There are no results, even though there are two DLLs that begin with the letter "z" in the Windows folder.

Er zijn geen resultaten geretourneerd omdat we het jokerteken als deel van het pad opgegeven.No results were returned because we specified the wildcard as part of the path. Hoewel de opdracht recursieve, is de Get-ChildItem cmdlet de items beperkt tot apparaten die in de Windows-map met namen die eindigen op '.dll'.Even though the command was recursive, the Get-ChildItem cmdlet restricted the items to those that are in the Windows folder with names ending with ".dll".

Een recursieve zoekopdracht voor bestanden waarvan de namen overeenkomen met een speciale patroon gebruikt u de -omvatten parameter.To specify a recursive search for files whose names match a special pattern, use the -Include parameter.

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32\Setup

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM       8261 zoneoc.dll

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     337920 zipfldr.dll