現在、VBにあるスクリプトをPowershellスクリプトに書き直しています。
スクリプトが行うことは、script-users入力に基づいてActiveDirectoryでユーザーを検索することです。
Function PromptForName{
    $nameInput = "*"
    $nameInput += Read-Host ("Please enter a full or partial name.")
    $nameInput += "*"
    return $nameInput
}
Function FindUsers{
    param ([string]$n)
    $usersArray = Get-ADUser -f {DisplayName -like $n} | Select-Object Name
    return $usersArray
}
このコードは、名前の正しいリストを出力します。次に私がやりたいのは、ユーザーがそれらの名前の1つを選択できるようにし、その人に関する詳細情報を入手できるようにすることです。スクリプトユーザーがそれらの名前の1つを選択できるようにすることに固執しています。
別の入力を求めるにはどうすればよいですか。ボックスには、FindUsersが付けたすべての名前の番号付きリストが表示され、選択したユーザーに基づいて番号が返されますか?私は完全に迷子になっています。
これは現在私がやろうとしている方法ですが、完全に間違っていると確信しています。
Function PrintUsers{
    param $a
    [int]$i, $j
    [string]$userList
    $j = 1
    foreach($object in $array){
        $userList += ($j + $array[$i])
        $j++
    }
    return $userList
} 
Function SelectUser{
    param $list
    $user = Read-Host ($list)
}
編集:
関数を次のように更新しました。
Function FindUsers{
    param ([string]$n)
    $usersArray = @(Get-ADUser -f {DisplayName -like $n} | Select-Object Name| Format-List)
    return $usersArray
}
Function PrintUsers{
    param ([String[]]$array)
    $i
    for($i = 1; $i -lt $usersArray.length; $i++){
        Write-Host "$i. $($usersArray[$i-1].Name)"
    }
}
FindUsersの後の出力は、次のようになります。名前:xxxxx yyyyy名前:xxxxxxxxzzzzなど。
したがって、$ usersArrayが返されると、それがすべて出力されます。PrintUsers関数まで印刷したくないので、次のような番号付きリストタイプの形式にします。1。xxxx yyyy 2.xxxxzzzzなど。
私はこれを理解するのに最も苦労しています。