[英]How to dynamically list out a list of files in a directory and number them in Powershell
我正在編寫一個 Powershell 腳本,它將向用戶提供 SQL 查詢選項以運行並獲取報告。 我有一個充滿這些查詢的整個目錄,但不確定如何動態列出名稱,並在終端中為它們編號。 我知道我可以對它們進行硬編碼,但我想說明以后添加或刪除的腳本。
項目的文件夾結構如下,我已經完成並測試了調用和執行查詢的方法。
- Powershell_Script.ps1
> Individual queries
- Query 1.sql
- Query 2.sql
- Query 3.sql
本質上,我希望能夠呈現如下所示的菜單,供用戶簡單地閱讀,然后選擇一個數字來運行該特定腳本。
Individual Scripts
******************
1. 500MB Files.sql
2. 4GB Files.sql
3. Duplicate Users.sql
4. Flat space Files.sql
etc...
您可以在腳本目錄上使用 Get-ChildItem 並將其推送到 ForEachObject 循環以對每個腳本按順序編號並在控制台中顯示文件名。 您可以同時將腳本的全名(路徑)存儲在一個變量中,以便在用戶輸入后引用。
Write-Host "Individual Scripts"
Write-Host "******************`r`n"
$i = 0
$SQL_Scripts = Get-ChildItem -Path "[PATH TO SQL SCRIPTS]" -Filter "*.sql" |
ForEach-Object {
Write-Host "$($i++). $($_.Name)" # Numbers and Write Filename to Console
$_.FullName #Passes back full script path to Array
}
Write-Host ""
$Number = Read-Host -Prompt "Which script do you want to run?"
$Script = $SQL_Scripts[$Number - 1] # User Selected No. - 1 is array element w/ script path
為此,我將表達式字段添加為格式表屬性列表中的第一個字段:
@{Label = "Index"; Expression = { 1 + [array]::indexof($myArray, $_) } }
使用 Read-Host 獲取數字后,我減去 1 以返回數組中的實際偏移量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.