使用PowerShell Out-GridView作為GUI替代
Out-GridView是內建的powershell cmdlet,可將給定命令的輸出傳送到互動式視窗。這篇文章將討論幾種不同的用例,以及如何將它們合併到程式碼中。
為什麼要使用Out-GridView?
- 簡單
- 內建於PowerShell
- 可訂製
- 強大
參量
首先,讓我們開始討論本文中將介紹的引數和可以使用的值。
- 輸出方式
- 單一:這會將您的選擇限制為一個物件;如果下一條命令只能接受一個值作為輸入,請使用此選項。
- 多個:這允許您一次選擇多個物件。如果下一條命令可以處理多個值作為輸入,請使用此選項。
- 無:將無法選擇任何內容,如果只需要報告,請使用此選項。這是預設值。
- 標題
- 這是您在Out-GridView視窗中放置描述性名稱的地方。任何其他說明也應放在此處。
程式碼範例
有幾種將資料匯入Out-GridView的方法,以及多種從Out-GridView輸出資料的方法。我們將介紹我最常使用的方法。
方法1:直接從命令輸入,僅顯示結果
Out-GridView的最基本功能是僅向使用者顯示資料。在下面的示例中,我們執行Get-Service命令以獲取給定系統上的所有服務,然後將這些結果通過管道傳輸到Out-GridView進行檢視。我們已經為Out-GridView視窗設定了一個標題,並將outputmode設定為None,這意味著沒有“確定”或“取消”按鈕,並且沒有資料將傳遞給下一個命令。
Get-Service | Out-GridView -Title "List of all the services on this system" -OutputMode None
方法2:來自變數的輸入,單個輸出
稍微高階一點的選項將使用一個變數來儲存Get-Service命令的所有輸出,然後我們將該變數通過管道傳遞給Out-GridView。這為我們提供了更大的靈活性,並在需要時可以在指令碼的其他部分重用該變數。我們再次為Out-GridView視窗設定標題,但是這次我們將outputmode設定為Single,這意味著將有一個“確定”和“取消”按鈕,而只允許使用者選擇一個值。所選的那個值將儲存在指定的變數($ single_output)中。在此示例中,我們使用Stop-Service命令停止選定的服務。
$services = Get-Service ### Getting all services on the system and sending them to the services variable
$single_output = $services | Out-GridView -Title "Select the service that you want to stop" -OutputMode Single ### Sending the services variable to Out-GridView, the single service selected will be sent to single_output variable
Write-Host "Stopping service" $single_output.Name -BackgroundColor Cyan -ForegroundColor Black
Stop-Service $single_output.Name ### Finally the service selected will be stopped
選擇單個服務,然後單擊“確定”按鈕將導致所選服務被停止。
方法3:來自自定義陣列的輸入,多個輸出
稍微高階一點的選項將使用自定義陣列來儲存來自services變數的所有資料。服務變數將從Get-Service命令填充,然後通過管道傳遞到Where-Object,該物件僅包含狀態為“正在執行”的服務。該陣列將使用Foreach迴圈中的所有Running服務填充。然後將自定義陣列通過管道傳遞到Out-GridView。對於停止服務的這個簡單示例,自定義陣列並不是完全必要的,但是對於更復雜的指令碼(您需要將多個來源的資料組合在一起),它可能很有用。我們再次為Out-GridView視窗設定標題,但是這次我們將outputmode設定為Multiple這意味著在允許使用者選擇多個值的同時會有一個“確定”和“取消”按鈕。單擊所需的值時,按住CTRL可以選擇多個值。通過按CTRL + A可以選擇所有值。所選的值將儲存在指定的變數($ multiple_output)中。在此示例中,我們在Foreach迴圈中利用Stop-Service命令來停止多個選定的服務。
$custom_array = @() ### Creating an empty array to populate data in
$services = Get-Service | Select Name, Status, DisplayName, StartType | Where-Object {$_.Status -eq "Running"} ### Getting Running services on the system and sending them to the services variable
### Looping through all of the running services and adding them to the custom array
Foreach ($service in $services){
### Setting up custom array utilizing a PSObject
$custom_array += New-Object PSObject -Property @{
Service_Name = $service.Name
Service_Status = $service.Status
Service_DisplayName = $service.DisplayName
Service_StartType = $service.StartType
}
}
$multiple_output = $custom_array | Out-GridView -Title "This is using a custom array with multiple output values" -OutputMode Multiple
### Looping through all of the selected services and stopping the service
Foreach ($output in $multiple_output){
Write-Host "Stopping service" $output.Service_Name -BackgroundColor Cyan -ForegroundColor Black
Stop-Service $output.Service_Name ### Finally the service selected will be stopped
}
選擇多個服務(單擊所需服務時按住CTRL),然後單擊“確定”按鈕將導致所選服務停止。(CTRL + A全選)
就是這樣,感謝您的閱讀!
相關文章
- docker Portainer 作為容器的 GUI 管理DockerAIGUI
- PowerShell使用
- PowerShell 使用
- 在SpringCloud使用RSocket替代Rabbit或Kafka作為訊息路由中繼的原始碼案例SpringGCCloudKafka路由中繼原始碼
- 網盤能否作為FTP替代產品?企業該如何進行FTP國產化替代?FTP
- Julia:調查顯示76% 的 Julia 使用者將 Python 作為首選替代語言Python
- GUI.BeginClip裁剪使用GUI
- 替代Hadoop作為資料湖的新的開源專案 - unpocodejavaHadoopJava
- 為什麼我推薦你使用 systemd timer 替代 cronjob?
- Powershell 命令列安裝 Windows 作業系統命令列Windows作業系統
- NEO GUI 多方簽名使用GUI
- Powershell tricks::Powershell RemotingREM
- Lumen 使用 Guzzle 替代 curl
- OrangePiPC替代法完成Gentoo映象製作
- NEO-GUI 客戶端使用GUI客戶端
- Powershell————1、認識Powershell
- 要使用PowerShell命令將ESD映像轉換為FFU映像,您可以藉助dism.exe工具和PowerShell指令碼來完成指令碼
- 使用Map.merge()替代ConcurrentHashMapHashMap
- 使用 Authing + Lambda 替代 AWS Cognito
- 縮排使用空格替代tab
- 使用 mockito 替代 unitest.mockMockito
- 為NEO-GUI 新增外掛系統GUI
- 使用powershell Client進行有效釣魚client
- nacos 作為配置中心使用心得--配置使用
- Powershell————2、Powershell互動式
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- Python如何使用tkinter編寫GUI程式PythonGUI
- 使用harbor和nexus作為docker registryDocker
- github作為圖床的使用方式Github圖床
- guiGUI
- 為什麼我要用GoEasy替代WebSocketGoWeb
- debian 12 + kde 使用 pipewire 替代 PulseAudio
- netty系列之:使用POJO替代bufNettyPOJO
- GPG 金鑰建立(+替代SSH使用)
- 在Arch上使用Syslinux替代GRUBLinux
- 在Mac 上如何使用替代文字?Mac
- PyQt5 GUI程式設計(元件使用)QTGUI程式設計元件
- Rust使用Tauri開發GUI程式——Hello WorldRustGUI