powershell でメニューを作る

投稿者: | 2020年1月9日

Windowsの管理はpowershellを使うことが求められることが多くあります。
コマンドごとに「xxx.ps1」ファイルを作るのもいいですが、メニュー型式であればもっと楽にコマンドを投入できるようになります。

powershellでできるメニュー

簡単なメニュー型式でもコマンド投入方法です。
以下がサンプルになります。

#
# メニュー
#

#----------------------
# 初期設定
#----------------------
# PowerShellプログラムパス
$Powershell = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

# 自分のフォルダパス
$Current = (Convert-Path .)

# 今日の日付のファイル
#$filename = Get-Date -Format "yyyy-MMdd-HHmmss"
#
#$today = (Get-Date).ToString(“yyyyMMdd”)
#$filename = $today

#----------------------
#ここにコマンドを入れる

$Arg1titl = "ユーザ一覧のcsv作成"
$Arg1dat = "Get-ADUser -Properties * -Filter * |Select-object name |Export-Csv user_$filename.csv -Encoding Default"
$Arg2titl = "稼働中のPC一覧"
$Arg2dat = "Get-ADComputer -Filter * -Properties IPV4Address | FT name,DNShostname,IPV4address -A"
$Arg3titl = "ユーザ検索"
$Arg3dat = "Get-ADUser "
$Arg4titl = "メモ帳の起動"
$Arg4dat = "notepad.exe"

#----------------------

function Show-Menu
{
Write-Host " "
Write-Host " "
Write-Host "-----------------------------"
Write-Host " Menu"
Write-Host " 1 :$Arg1titl "
Write-Host " 2 :$Arg2titl "
Write-Host " 3 :$Arg3titl "
Write-Host " 4 :$Arg4titl "
Write-Host " "
Write-Host " 終了は [ctr] + [c]"
Write-Host "-----------------------------"
}

# メニュータイトル
#
:top_menu
cls
while ($true) {
Show-Menu
$Input_No = Read-Host "番号を入力してください"
Write-Host " "

switch($input_No)
{
"1" {Write-Output ("1が入力されました。")
Start-Process -FilePath $Powershell -ArgumentList $Arg1dat -NoNewWindow -Wait
}
"2" {Write-Output ("2が入力されました。")
Start-Process -FilePath $Powershell -ArgumentList $Arg2dat -NoNewWindow -Wait
}
"3" {Write-Output ("3が入力されました。")
$Input_user = Read-Host "ユーザ名を入力してください"
$Argument3 = $Argument3 + $Input_user
Start-Process -FilePath $Powershell -ArgumentList $Arg3dat -NoNewWindow -Wait
}
"4" {Write-Output ("4が入力されました。")
Start-Process -FilePath $Powershell -ArgumentList $Arg4dat -NoNewWindow -Wait
}

default {Write-Output (" *** もういちど入力 ***`r`n")
break }
}
}

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です