簡體   English   中英

Active Directory和Powershell

[英]Active Directory and Powershell

我目前正在將VB中的腳本重寫為Powershell腳本。

腳本的作用是根據腳本用戶輸入在Active Directory中搜索用戶。

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
}

此代碼將打印出正確的名稱列表。 然后,我想做的就是允許用戶選擇這些名稱之一,並獲得有關該人的更多信息。 我堅持允許腳本用戶選擇這些名稱之一。

我如何提示再次輸入; 該框將在其中顯示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名稱:xxxxx zzzzz等。

因此,$ usersArray的返回將顯示所有內容。 在PrintUsers函數之前,我不需要任何打印,並且希望它采用如下編號列表類型的格式:1. xxxx yyyy 2. xxxx zzzz等。

我最困難的時間來解決這個問題。

# get all users
$usersArray = @(Get-ADUser -f {DisplayName -like $n} )

# create menu
for($i=1; $i -le $usersArray.count; $i++){
    Write-Host "$i. $($usersArray[$i-1].Name)"
}

# prompt for user number
$user = Read-Host Enter the user number to get more info

# display full info for selected user
$usersArray[$user-1] | Format-List *

使用“添加成員”向每個用戶添加唯一標識符。 舉例來說,讓我們將流程視為用戶對象:

$procs = gps;
$procs = $procs | % { $i=0; } {
    Add-Member -MemberType NoteProperty -InputObject $_ -Name Number -Value $i -PassThru;
    $i++;
};
$procs | select Number,Name;
$procid = Read-Host -Prompt 'Enter the number of the process you would like to operate on';
$proc = $procs | ? { $_.Number -eq $procid };
Write-Host -Object ('Operating on proc: {0}' -f $proc.Name);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM