當你使用Get-ChildItem獲取輸出文件列表時,你可能會發現即使用了-Filter參數也會比你預期的結果要多得多。
這里有一個例子,它不僅返回.ps1擴展名文件同時也返回.ps1xml擴展名文件:
Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter *.ps1
為了限制結果集只是你設置后的擴展名,可以添加一個命令的過濾器,以完善的結果:
Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter *.ps1 |
Where-Object { $_.Extension -eq '.ps1' }
這將只返回指定的擴展名文件。
混合使用Get-ChildItem 參數
可以在同一命令中使用 Get-ChildItem cmdlet 的多個參數。在混合使用參數之前,請確保您了解通配符匹配。例如,以下命令將不會返回完整的結果:
PS> Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll
它只會返回C:\Windows\下的不以a-y開頭的dll。原因是你給的是具體的只是C:\Windows\下的*.dll,而這與遞歸的參數-recurse矛盾,因為-recurse將返回的是C:\Windows\目錄及遞歸目錄下所有符合要求的dll。
以下是正確的代碼:
若要為名稱與特定模式相匹配的文件指定遞歸搜索,請使用 -Include 參數。
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
您可能感興趣的文章:- PowerShell小技巧之實現文件下載(類wget)
- PowerShell中使用Get-Alias命令獲取cmdlet別名例子
- PowerShell中使用Get-Date獲取日期時間并格式化輸出的例子
- PowerShell中使用Get-EventLog讀取、篩選系統日志的例子
- PowerShell中使用Out-String命令把對象轉換成字符串輸出的例子
- PowerShell中使用Get-ChildItem命令讀取目錄、文件列表使用例子和小技巧
- PowerShell實現簡單的grep功能