<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      如何獲取特定用戶組內(nèi)的無效賬戶?

      時(shí)候,IT管理員可能會(huì)想清除某些服務(wù)器/計(jì)算機(jī)內(nèi)置管理員組里面的一些已失效的用戶,這些用戶可能曾經(jīng)被加入管理員組,但是由于離職或是其他原因,賬號(hào)已從AD注銷,而在這些用戶組內(nèi),他們的SID信息卻得以保留,就像是這樣:

       

       

      像圖中的最后兩個(gè)用戶,S-1-5-21-1004336348-1220945662-1801674531-10174 和 6866,就是由于信息從AD獲取不到,而顯示為SID的。如何批量從服務(wù)器抓這樣的SID用戶出來呢?我們可以使用 PowerShell 腳本。

       

      以下就是一個(gè)代碼示例,我將其做成了一個(gè)函數(shù) QueryNonExistentUsers, 大家可以用在很多實(shí)際的工作之中,而且稍加修改,可以完成多種多樣的任務(wù):

       

       1 #Query Non-existent Users PowerShell Script Function by Eric Sheh
       2 #Version 1.2 Build 20120626
       3 
       4 Function QueryNonExistentUsers
       5 {
       6     Param
       7     (
       8         [Parameter(Mandatory=$true,Position=0)][String]$Server,
       9         [Parameter(Mandatory=$true,Position=1)][String]$UserGroup,
      10         [Parameter(Mandatory=$false,Position=2)][Bool]$CountInstead = $False
      11         # Example: QueryNonExistentUsers "hostname" "Administrators" $True OR QueryNonExistentUsers -Server "hostname" -UserGroup "Administrators" -CountInstead $True
      12         # OR QueryNonExistentUsers "hostname" "Administrators" OR QueryNonExistentUsers -Server "hostname" -UserGroup "Administrators"
      13     )
      14     Begin
      15     {
      16         $members=@()
      17     }
      18     Process
      19     {
      20         [adsi]$computer = "WinNT://" + $Server
      21         $group = $computer.psbase.children | ?{$_.psbase.schemaclassname -eq 'group'} | ?{$_.Path -match $UserGroup}
      22         
      23         foreach ($user in $group.Members())
      24         {
      25             $usr_obj = New-Object PSObject
      26             $usr_obj | Add-Member -MemberType NoteProperty -Name 'aDSPath' -Value $user.GetType().InvokeMember('aDSPath', 'GetProperty', $null, $user, $null)
      27             $usr_obj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $user.GetType().InvokeMember('Name', 'GetProperty', $null, $user, $null)
      28             $path = $usr_obj.aDSPath.split('/')
      29 
      30             if ($path.Count -eq 4)
      31             {
      32                 $usr_obj | Add-Member -MemberType NoteProperty -Name 'Domain' -Value $path[2]
      33             }
      34             elseif ($path.Count -eq 5)
      35             {
      36                 $usr_obj | Add-Member -MemberType NoteProperty -Name 'Domain' -Value $path[3]
      37             }
      38             else
      39             {
      40                 $usr_obj | Add-Member -MemberType NoteProperty -Name 'Domain' -Value 'Unknown'
      41             }
      42             $members += $usr_obj
      43         }
      44       
      45         $members = @($members | Sort-Object -Property Domain, Name)
      46         $members = $members | Where-Object {$_.Domain -eq "Unknown"}        
      47     }
      48     End
      49     {
      50         If ($CountInstead)
      51         {
      52             return $members.count
      53         }
      54         else
      55         {
      56             return $members
      57         }
      58     }
      59 }

       

      我們可以寫兩行code來調(diào)用這個(gè)函數(shù)進(jìn)行測(cè)試(例如連接到 TestServer,查詢其上的內(nèi)建 Administrators 組里面有沒有無效用戶):

       

      1 #Test:
      2 $Result = QueryNonExistentUsers "TestServer" "Administrators"
      3 Write-Output $Result

       

      可以看見執(zhí)行結(jié)果與上面的第一張 UI 查詢結(jié)果圖是一致的:

       

      最后我解釋一下幾個(gè)要點(diǎn):

      1. 使用 ADSI 比使用 WMI 的運(yùn)行效率高;

      2. 使用 ADSI 時(shí),操作本地對(duì)象用"WinNT://",而操作AD對(duì)象,請(qǐng)使用"LDAP://";

      3. 獲得代碼中定義的 $user 對(duì)象后,為何要用"/"符號(hào)分段呢?有時(shí)怎么確定 Domain 的呢?其實(shí)是利用了 Members 對(duì)象里 aDSPath 屬性值的一些特性的:
      例如對(duì)于本地用戶,aDSPath 的值是這樣:



      即"WinNT://DomainName/HostName/LocalUserName"的形式,所以依"/"拆分后,形成了一個(gè)一維數(shù)組,共有5個(gè)元素,其中第二元素為空。因此要取第四個(gè)元素"HostName"作為該賬戶的"域"(因?yàn)檫@是個(gè)本地賬戶)。
      而對(duì)于域賬戶,aDSPath 的值是這樣的:



      即"WinNT://DomainName/DomainUserName"的形式。因此拆分后形成一維數(shù)組只有四個(gè)元素,因此要取第三個(gè)元素作為該賬戶的域名稱。

      而對(duì)于已失效的用戶,結(jié)果是這樣的:



      所以我們?nèi)藶樘幚硭?Domain 值為"Unknown"并寫入結(jié)果中。

       

      對(duì)了,這個(gè)函數(shù)的參數(shù)和使用方法在以上的代碼中其實(shí)已有說明,這里再單獨(dú)列舉一下:

      QueryNonExistentUsers "hostname" "groupname" $true/$false

      第一個(gè)參數(shù) hostname 自然是你要查詢的那臺(tái)機(jī)器的名稱了,第二個(gè)參數(shù)是你要查詢的用戶組,而第三個(gè)參數(shù)可以省略,默認(rèn)是為 $false 的,返回具體的組內(nèi)全部用戶,而如果你指定為 $true, 那么返回的只是一個(gè)計(jì)數(shù)值。例如上面的例子中,如果執(zhí)行"$Result = QueryNonExistentUsers "TestServer" "Administrators" $true",那么返回結(jié)果是數(shù)字2.

      如果您要得到返回的完整組內(nèi)用戶列表,請(qǐng)將代碼中的"$members = $members | Where-Object {$_.Domain -eq "Unknown"}"去掉(在第46行),這里有這一句就是為了在結(jié)果中篩出失效賬戶。

      posted @ 2012-08-09 19:31  佘華煜  閱讀(1393)  評(píng)論(1)    收藏  舉報(bào)
      主站蜘蛛池模板: 人妻系列中文字幕精品| 亚洲 a v无 码免 费 成 人 a v| 亚洲一区二区三区18禁| 中文字幕一区二区三区四区五区| 蜜臀av一区二区精品字幕| 亚洲二区中文字幕在线| 玩弄丰满少妇人妻视频| 亚洲综合精品中文字幕| 久热伊人精品国产中文| 真人无码作爱免费视频| 日本污视频在线观看| 国产成人久久综合第一区| 北海市| 亚洲东京色一区二区三区| 高清无码爆乳潮喷在线观看| 亚洲人妻中文字幕一区| 国产在线无码精品无码| 亚洲aⅴ无码专区在线观看春色| 国产精品成熟老女人| 特级做a爰片毛片免费看无码| 激情动态图亚洲区域激情| 国产中文字幕在线一区| 国产精品一码在线播放| 国产成人综合在线观看不卡| 午夜爽爽爽男女污污污网站| 97精品人妻系列无码人妻| 内射囯产旡码丰满少妇| 一亚洲一区二区中文字幕| 精品中文人妻在线不卡| 欧美黑人大战白嫩在线| 国产一区二区丰满熟女人妻 | 人妻中文字幕在线视频无码| 免费国产好深啊好涨好硬视频| 少妇高潮毛片免费看| 开心五月激情综合久久爱| 久青草国产在视频在线观看| 三上悠亚久久精品| 99精品久久免费精品久久| 亚洲AV日韩精品久久久久| 国产成人久久精品二三区| 宁波市|