AD用户SID的Powershell脚本

时间:2013-11-11 10:30:11

标签: powershell batch-file active-directory windows-server-2003 sid

我目前使用此脚本从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格式?

干杯,

1 个答案:

答案 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