2017-09-08 21 views
2

コンピュータに存在するものに応じて表示メニューを作成したい。変数に応じてpowershellでショーメニューを作成する

(フォルダ名に基づいて)c:\ users \にあるメニューのユーザー名をリストしたいとします。

例えば

: はC:\ユーザー nammedフォルダがある:

homer.simpson 
lisa.simpson 
bart.simpson 

とリサのためhomer.simpson 2に1を入力して、それらのいずれかを選択するようにユーザーに求めるショーメニューで

。シンプソンなど。

どうすればいいですか?

ありがとうございます!

EDIT:コード

$users = Get-ChildItem "$env:SystemDrive\Users"| ForEach-Object { $_.Name } 

foreach ($user in $user) { 

$user 
$num++ 

New-Variable -Name "a$num" -Value $user 
#Get-Variable -Name "$user$i" 

} 



function Show-Menu 
{ 
    param (
      [string]$Title = 'Please select an user' 
    ) 
    cls 
    Write-Host "================ $Title ================" 

    Write-Host "1: $a1" 
    Write-Host "2: $a2" 
    Write-Host "3: $a3" 
    Write-Host "Q: $a4" 
} 


do 
{ 
    Show-Menu 
    $input = Read-Host "Please make a selection" 
    switch ($input) 
    { 
      '1' { 
       cls 
       'You chose option #1' 
      } '2' { 
       cls 
       'You chose option #2' 
      } '3' { 
       cls 
       'You chose option #3' 
      } 'q' { 
       return 
      } 
    } 
    pause 
} 
until ($input -eq 'q') 
+0

あなたが試したコードを投稿してください。私はあなたが[このウェブサイト](https://4sysops.com/archives/how-to-build-an-interactive-menu-with-powershell/)から 'show-menu'を得ていると信じています。そのフォルダ内のユーザーを取得するには '(Get-ChildItem C:\ Users).Name'を実行することができます – cet51

+0

Hey Cory、 ありがとうございました! はい、そうです。 コードを投稿します – xsouxsou

答えて

1

は(Show-Menu by Adam Bertramに基づいて)これを試してみてください:コメントパー

function Show-Menu 
{ 
    param (
     [string]$Title = 'My Menu' 
    ) 
    Clear-Host 
    Write-Host "================ $Title ================" 

    $Menu = @{} 

    (Get-ChildItem C:\Users).Name | ForEach-Object -Begin {$i = 1} { 

     Write-Host "$_`: Press '$i' for this option." 
     $Menu.add("$i",$_) 
     $i++ 
    } 

    Write-Host "Q: Press 'Q' to quit." 

    $Selection = Read-Host "Please make a selection" 

    if ($Selection -eq 'Q') { Return } Else { $Menu.$Selection } 

} 

$UserSelection = Show-Menu -Title 'Local Users' 

を、ユーザーフォルダ名の一覧を取得するには(Get-ChildItem C:\Users).Nameを使用しています。これらは、それが中に現在のアイテムの自動変数である今$_として表される各ファイル(の名前をプリントアウトループで

1とカウンタ変数 $iをinitilizingことによって開始 ForEach-Objectループにパイプされますパイプライン)、カウンタ変数を使用して番号付きオプションを表示します。また、各数値/名前のペアを $Menuという名前のハッシュテーブルに入れ、選択肢が Read-Hostで入力されたときにルックアップとして使用されます。

選択したオプションは、$UserSelection変数に戻されます。

+0

Hey Mark! 多くのおかげで、それはまさに私が探していたものです! ありがとうございました! Axel – xsouxsou

+0

おかげさまで、選択したユーザーの価値をどのように得ることができますか? – xsouxsou

+0

私は私の答えを改めました。 –

関連する問題