我正在嘗試使用 powershell 為我的公司更新一些程式。我正在撰寫一個腳本來這樣做(按照指示)。當我在機器上安裝新版本的程式時,還需要我“升級”現有檔案夾以匹配新版本的軟體。我需要找到包含某個隱藏檔案夾的所有檔案夾(讓所述檔案夾的名稱為 .blah)。我正在嘗試使用 get-childitem 命令和 -path [drives to check] -Recurse -Directory -Force -EA SilentlyContinue。但是,我不確定如何正確過濾以僅查找其中包含 .blah 檔案夾的檔案夾。幫助將不勝感激。
uj5u.com熱心網友回復:
將您的Get-ChildItem呼叫與Where-Object測驗給定名稱的子目錄的呼叫結合使用Test-Path:
# Note: "." refers to the *current* directory
# Adjust as needed.
Get-ChildItem -LiteralPath . -Recurse -Directory -Force -ErrorAction Ignore |
Where-Object {
Test-Path -ItemType Container -LiteralPath "$($_.FullName)\.blah"
}
該
Get-ChildItem呼叫輸出-Directory整個目錄子樹( )中的所有目錄(-Recurse),包括隱藏目錄(-Force),忽略任何錯誤(例如缺少權限,-ErrorAction Ignore)。該
Where-Object呼叫呼叫在手頭目錄 ( ) 中Test-Path查找子目錄 ( )。.blah-ItemType Container$_使用
-LiteralPath引數,Test-Path查找指定路徑(如果存在),無論目標檔案或目錄是否隱藏。- 相比之下,如果使用基于通配符的引數,則找不到
-Path隱藏項,并且鑒于 PowerShell 7.2.5沒有開關,因此無法強制包含它們;這種功能上的差距是GitHub 問題 #6501的主題。Test-Path-Force
- 相比之下,如果使用基于通配符的引數,則找不到
注意:在PowerShell (Core) 7 中,您可以簡化
"$($_.FullName)\.blah"為,"$_\.blah"因為 and 輸出的和[System.IO.DirectoryInfo]實體[System.IO.FileInfo]始終將其字串化為其完整路徑( ) 屬性,這與在WindowsPowerShell中不同,它們在情況下僅通過其檔案/目錄名稱進行字串化- 請參閱這個答案。Get-ChildItemGet-Item.FullName
uj5u.com熱心網友回復:
您可以將 GCI 與-directory引數一起使用,因此您只獲取 dir's, pipe 到 where-object 以檢查 fullName 屬性是否包含所需的檔案夾名稱
get-childitem -path "D:\" -Recurse -Directory -Force -EA SilentlyContinue | ? {$_.FullName -like "*.blah*"}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495211.html
上一篇:需要將XML資料提取到CSV
下一篇:Powershell活動目錄查詢
