Powershell - 如何呈现选择哪个AD OU运行?

时间:2016-08-24 20:52:20

标签: powershell multiple-choice

我不是脚本编写者,我试图弄清楚如何让用户选择运行脚本的OU。

我有以下基本脚本,通过OU枚举并列出一些基本的用户对象信息到CSV文件:

$ADUserParams=@{ 
'Server' = 'ServerDC' 
'Searchbase' = 'OU=ToBeDeleted,DC=domain,DC=com' 
'Searchscope'= 'Subtree' 
'Filter' = '*' 
'Properties' = '*' 
} 

#This is where to change if different properties are required. 

$SelectParams=@{ 
'Property' = 'SAMAccountname', 'CN', 'HomeDirectory'
} 

get-aduser @ADUserParams | select-object @SelectParams | export-csv "c:\temp\tempoutput_users.csv" -Append -NoTypeInformation
Get-content "c:\temp\tempoutput_users.csv" | select -Skip 1 | Set-Content "C:\temp\UserOutput.csv"
Remove-Item "c:\temp\tempoutput_users.csv"

但是,我想为脚本运行者提供一个选择,以便能够选择" ToBeDeleted"中的哪个子OU。 OU用于运行脚本的其余部分。

例如,如果有一个名为" 2016年9月的"和一个名为" 2016年10月"都在" ToBeDeleted" OU,我希望脚本能够询问这个人"你想要反对哪个OU?"给他们一个编号的选择,如:

  1. September2016
  2. October2016
  3. 然后他们进行选择,脚本仅针对该特定子OU运行,并获取该选定OU中的用户对象信息。

    我查看了几个网站,提供了#34;选择"但它似乎更像是/否选择,我迷路了。

    有人能指出我正确的方向来完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

Function Select-Array
{
    Param
    (
        $Array
    )
    $Count = 0
    Write-Host "Select Item"
    foreach ($Item in $Array)
    {
        Write-Host "$Count. $Item"
        $Count ++
    }
    $Selection = Read-Host
    return $Array[$Selection]
}

$OU = (Get-ADOrganizationalUnit -SearchBase 'OU=ToBeDeleted,DC=domain,DC=com'  -Filter * -SearchScope OneLevel).DistinguishedName

$ADUserParams=@{ 
'Server' = 'ServerDC' 
'Searchbase' = $OU 
'Searchscope'= 'Subtree' 
'Filter' = '*' 
'Properties' = '*' 
} 

$SelectParams=@{ 
'Property' = 'SAMAccountname', 'CN', 'HomeDirectory'
} 

Get-ADUser @ADUserParams | select-object @SelectParams | export-csv "c:\temp\tempoutput_users.csv" -Append -NoTypeInformation
Get-Content "c:\temp\tempoutput_users.csv" | select -Skip 1 | Set-Content "C:\temp\UserOutput.csv"
Remove-Item "c:\temp\tempoutput_users.csv"