Out-GridView কমান্ডলেট ডেটাকে একটি ইন্টারঅ্যাক্টিভ গ্রাফিক্যাল টেবিল হিসেবে প্রদর্শন করার অনুমতি দেয় যা বিভিন্ন কRITEERIYA অনুযায়ী ফিল্টার বা সর্ট করা যায়। আপনি Out-Gridview কমান্ডলেট স্ক্রিপ্টগুলিতে ব্যবহার করতে পারেন যেখানে আপনি একটি ইউজারকে অবজেক্ট সিলেক্ট করার জন্য সবচেয়ে সহজ GUI প্রদান করতে চান।
আসলে, Out-GridView হল .NET DataGridView রান করার একটি র্যাপার, একটি স্ট্যান্ডার্ড গ্রাফিক্যাল ফর্ম Windows Form Control- থেকে।
Out-GridView টেবিল ব্যবহার করা
Out-GridView কমান্ডলেট ব্যবহার করে উইন্ডোজ সার্ভিসের তালিকা এবং তাদের কিছু প্রপার্টি প্রদর্শনের সবচেয়ে সহজ উদাহরণ দেখি:
Get-Service | Select DisplayName,Status,ServiceName,Can* | Out-GridView

আপনি দেখছেন, উইন্ডোজ সার্ভিস প্রপার্টির তালিকা সহ একটি গ্রাফিক্যাল টেবিল ফর্ম উপস্থিত হয়েছে। কমান্ডলেট অবজেক্ট প্রপার্টি বা ডেটা টাইপ অনুযায়ী কলাম নাম অটোমেটিক্যালি সেট করে, এবং ডেটা ফরম্যাট নির্ধারণ করা না যায়লে PSObject প্রপার্টি এক্সটেন্ড করে।
ফিল্টার বক্স ব্যবহার করে ফর্মে সার্চ করতে পারেন।

আপনি পাওয়ারশেল থেকে এক্সেল টেবিলের ডেটা সরাসরি এক্সেস করতে পারেন।
আপনি Add criteria বাটনও ব্যবহার করে টেবিলে সার্চ করতে পারেন। নিচের স্ক্রিনশটে, আমি চলমান সার্ভিসগুলোর তালিকা তৈরি করলাম যাদের নামে VMW রয়েছে। ফিল্টারটি অবজেক্ট প্রপার্টির মানগুলো সরাসরি ব্যবহার করে তৈরি করা হয়েছে।

অথবা চলুন TOP 10 প্রসেসের তালিকা দেখি যাদের CPU ইউটিলাইজেশন সবচেয়ে বেশি (আমি –Title অপশন ব্যবহার করে আমার Out-GridView উইন্ডোর নাম পরিবর্তন করেছি):
Get-Process | Sort-Object CPU -Descending | Select -First 10 | Out-GridView -Title "Top 10 CPU processes"
কলাম হেডারে ক্লিক করে টেবিল কন্টেন্ট দ্রুত আর্ডেনিং/ডিসেন্ডিং অর্ডারে সর্ট করতে পারেন।
PassThru সুইচ সহ Out-GridView কমান্ডলেট
তবে, Out-Gridview-এর সবচেয়ে শক্তিশালী ফিচার হল –PassThru অপশন, যা আপনার পাওয়ারশেল স্ক্রিপ্টের জন্য ইউজার-ফ্রেন্ডলি GUI-এর একটি নতুন লেভেল প্রদান করে।
এই অপশন পাওয়ারশেল ৩.০ বা উচ্চতর ভার্সনে উপলব্ধ, একটি ইউজারকে টেবিলে এক বা একাধিক অবজেক্ট সিলেক্ট করতে দেয়, এবং সেগুলো স্ট্যান্ডার্ড পাইপ ব্যবহার করে আপনার পাওয়ারশেল স্ক্রিপ্টের পরবর্তী কমান্ডলেটগুলোর কাছে পাস করে।
উদাহরণস্বরূপ, নিচের পাওয়ারশেল স্ক্রিপ্ট চলমান উইন্ডোজ সার্ভিসের তালিকা প্রদর্শন করে। একজন ইউজার লিস্ট থেকে একটি সার্ভিস সিলেক্ট করে OK ক্লিক করে।
Get-Service | Where-Object {$_.status -eq 'running'}| Out-GridView -Title "Select service to restart" –PassThru -OutputMode Multiple | Restart-service –verbose
স্ক্রিপ্টটি শুধু ইউজার দ্বারা সিলেক্ট করা সার্ভিসটি রিস্টার্ট করবে।

ইউজার দ্বারা সিলেক্ট করা অবজেক্টগুলো একটি ভেরিয়েবলে সংরক্ষণ করতে পারেন:
$Svcs = Get-Service | Where-Object {$_.status -eq 'running'}| Out-GridView -Title "Select services" –PassThru
অথবা শুধু একটি প্রপার্টির মান সংরক্ষণ করতে পারেন। এর জন্য পূর্বের কমান্ডে নিচের পাইপ যোগ করুন:
| Select -ExpandProperty Name

আপনি ইউজারকে টেবিলে শুধু একটি আইটেম বা একাধিক আইটেম সিলেক্ট করার অনুমতি দিতে পারেন নিচের অপশনগুলো ব্যবহার করে:
-OutputMode Single and -OutputMode Multiple
টেবিলে একাধিক রো সিলেক্ট করতে Ctrl ধরে রাখুন।
পাওয়ারশেল স্ক্রিপ্টে GUI হিসেবে Out-Gridview কীভাবে ব্যবহার করবেন?
Out-GridView ব্যবহার করার আরও কিছু আকর্ষণীয় উদাহরণ:
পাওয়ারশেল হিস্টরি থেকে পূর্বের কমান্ডগুলোর তালিকা প্রদর্শন এবং সিলেক্ট করা কমান্ডগুলো আবার রান করা:
Get-History | Out-GridView -PassThru | Invoke-Expression
অতিরিক্ত উইন্ডোজ কম্পোনেন্টের তালিকা প্রদর্শন এবং সিলেক্ট করা ইনস্টল করার জন্য (উদাহরণস্বরূপ, RSAT Active Directory ম্যানেজমেন্ট টুলস এবং SSH ক্লায়েন্ট):
Get-WindowsCapability -Online | Where-Object {$_.State –eq “NotPresent”}| Out-GridView -PassThru |Add-WindowsCapability –Online

আপনার RDS ফার্মের Connection Broker থেকে RDP সেশন তালিকা পেতে এবং ইউজার দ্বারা সিলেক্ট করা ডেস্কটপে RDP শ্যাডো সংযোগ দিতে:
import-module remotedesktop
$cbserver = "munrdsbroker1.woshub.com"
$id = get-rdusersession -ConnectionBroker $cbserver | Out-GridView -title "RD Connection" -PassThru | select hostserver, unifiedsessionid
$id2 = $id | select -ExpandProperty unifiedsessionid
$srv = $id | select -ExpandProperty hostserver
mstsc /v:"$srv" /shadow:"$id2" /control /noconsentprompt
AD পাওয়ারশেল মডিউল থেকে Get-ADUser কমান্ডলেট ব্যবহার করে নির্দিষ্ট OU-এ সক্রিয় ইউজারদের তালিকা প্রদর্শন এবং ইউজারের ডোমেন পাসওয়ার্ড রিসেট করা:
Import-Module ActiveDirectory
$NewPasswd=Read-Host "Enter a new user password" –AsSecureString
Get-ADUser -filter {Enabled -eq "true"} -properties Name, displayname,EmailAddress,pwdLastSet -SearchBase ‘OU=Berlin,OU=DE,DC=woshub,DC=com’| Out-GridView -PassThru –title “Select a user to reset a password”| Set-ADAccountPassword -NewPassword $NewPasswd -Reset

Invoke-Command ব্যবহার করে রিমোট কম্পিউটার থেকে ডেটা নিয়ে টেবিলে দেখানো:
Invoke-Command -ComputerName be-dc01, mun-dc01, mun-dc02 -ScriptBlock {Get-Culture} | Select-Object PSComputerName,DisplayName| Out-GridView
দুর্ভাগ্যবশত, Out-GridView কমান্ডলেট উইন্ডোজ সার্ভার কোরে ব্যবহার করা যায় না। আপনি যদি এটি রান করেন, নিচের এরর হবে:
out-gridview : To use the Out-GridView, install Windows PowerShell ISE by using Server Manager, and then restart this application. (Could not load file or assembly 'Microsoft.PowerShell.GraphicalHost, Version=3.0.0.0, Culture=neutral, PublicKeyToken=xxxxx' or one of its dependencies. The system cannot find the file specified.)
তবে, আপনি অনেক কমান্ডলেটের –ComputerName অপশন ব্যবহার করে Server Core অ্যাক্সেস করতে পারেন। উদাহরণস্বরূপ:
Get-Service -ComputerName lon-dc02 | Where-Object {$_.status -eq 'running'}| Out-GridView –Title "Select service to restart" -OutputMode Single|Restart-Service -Verbose
কারণ যেন, মাইক্রোসফট পাওয়ারশেল কোর ৬.x থেকে Out-GridView কমান্ডলেট সরিয়ে দিয়েছিল, কিন্তু ভার্সন ৭.০-এ ফিরিয়ে আনা। আপনি যদি পাওয়ারশেল ৬.x ব্যবহার করেন, নিচের কমান্ড দিয়ে লেটেস্ট ভার্সনে আপডেট করুন:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
আপনি দেখছেন, Out-GridView আপনার পাওয়ারশেল স্ক্রিপ্টে একটি সুন্দর গ্রাফিক্যাল ইন্টারফেস যোগ করার অনুমতি দেয়।