我不是脚本编写者,我试图弄清楚如何让用户选择运行脚本的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?"给他们一个编号的选择,如:
然后他们进行选择,脚本仅针对该特定子OU运行,并获取该选定OU中的用户对象信息。
我查看了几个网站,提供了#34;选择"但它似乎更像是/否选择,我迷路了。
有人能指出我正确的方向来完成这项工作吗?
答案 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"