我目前使用此脚本从AD获取用户的SID。并不是每次我需要一个SID时,我必须打开脚本并输入人员用户名,当我有100个要做的时候可能会令人沮丧。当前脚本如下:
$name = "username"
(New-Object System.Security.Principal.NTAccount($name)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
有没有办法可以使用相同的脚本,但是将AD用户名放在文本文件中并将它们拉入PowerShell并输出结果,这样我就可以获得用户名和SID。理想情况下是CSV格式?
干杯,
答案 0 :(得分:0)
假设你有一个用户名列表,每个用户名都在userlist.txt的各一行,这个过程并不太复杂。
# Array for name&sid tuples
$users = @()
cat C:\temp\userlist.txt | % {
# Syntax sugar
$spSid = [Security.Principal.SecurityIdentifier]
# Custom object for name, sid tuple
$user = new-object psobject
$user | Add-Member -MemberType noteproperty -name Name -value $null
$user | Add-Member -MemberType noteproperty -name Sid -value $null
$user.Name = $_
$user.Sid = (New-Object Security.Principal.NTAccount($_)).Translate($spSid).Value
# Add user data tuple to array
$users += $user
}
# Export array contents into a CSV file
$users | Select-Object -Property Name,Sid | Export-Csv -NoTypeInformation C:\temp\sidlist.txt