簡體   English   中英

如何動態列出目錄中的文件列表並在 Powershell 中對它們進行編號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM