Dela via


about_Wildcards

Kort beskrivning

Beskriver hur du använder jokertecken i PowerShell.

Lång beskrivning

Jokertecken representerar ett eller flera tecken. Du kan använda dem för att skapa ordmönster i kommandon. Jokerteckenuttryck används med operatorn -like eller med någon parameter som accepterar jokertecken.

Om du till exempel vill matcha alla filer i C:\Techdocs katalogen med ett .ppt filnamnstillägg skriver du:

Get-ChildItem C:\Techdocs\*.ppt

I det här fallet representerar jokertecknet asterisk (*) alla tecken som visas före filnamnstillägget .ppt .

Jokerteckenuttryck är enklare än reguljära uttryck. Mer information finns i about_Regular_Expressions.

PowerShell stöder följande jokertecken:

  • * – Matcha noll eller fler tecken
    • a* matchar aA, agoch Apple
    • a* matchar inte banana
  • ? – För strängar matchar du ett tecken i den positionen
    • ?n matchar an, inoch on
    • ?n matchar inte ran
  • ? – För filer och kataloger matchar du noll eller ett tecken i den positionen
    • ?.txt matchningar a.txt och b.txt
    • ?.txt matchar inte ab.txt
  • [ ] – Matcha ett intervall med tecken
    • [a-l]ook matchar book, cookoch look
    • [a-l]ook matchar inte took
  • [ ] – Matcha specifika tecken
    • [bc]ook matchningar book och cook
    • [bc]ook matchar inte hook
  • `* - Matcha ett tecken som en literal (inte ett jokertecken)
    • 12`*4 tändstickor 12*4
    • 12`*4 matchar inte 1234

Du kan inkludera flera jokertecken i samma ordmönster. Om du till exempel vill hitta textfiler med namn som börjar med bokstäverna a till och med l skriver du:

Get-ChildItem C:\Techdocs\[a-l]*.txt

Kommentar

Jokerteckenmatchning för filsystemobjekt fungerar annorlunda än för strängar. Mer information finns i avsnittet Anmärkningar i metoden DirectoryInfo.GetFiles(String, EnumerationOptions).

Det kan finnas fall där du vill matcha literaltecknet i stället för att behandla det som ett jokertecken. I dessa fall kan du använda backtick-tecknet (`) för att undvika jokertecknet så att det jämförs med literalteckenvärdet. Matchar till exempel '*hello`?*' strängar som innehåller "hello?".

Många cmdletar accepterar jokertecken i parametervärden. I hjälpavsnittet för varje cmdlet beskrivs vilka parametrar som accepterar jokertecken. För parametrar som accepterar jokertecken är deras användning skiftlägeskänslig.

Du kan använda jokertecken i kommandon och skriptblock, till exempel för att skapa ett ordmönster som representerar egenskapsvärden. Följande kommando hämtar till exempel tjänster där egenskapsvärdet ServiceType innehåller Interaktiv.

Get-Service | Where-Object {$_.ServiceType -Like "*Interactive*"}

I följande exempel innehåller -instruktionen If ett villkor som använder jokertecken för att hitta egenskapsvärden. Om återställningspunktens Beskrivning innehåller PowerShell lägger kommandot till värdet för återställningspunktens CreationTime-egenskap i en loggfil.

$p = Get-ComputerRestorePoint
foreach ($point in $p) {
  if ($point.description -like "*PowerShell*") {
    Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
  }
}

Se även