我已經創建了基於Active-Directory模塊一個登錄腳本編譯,以便查詢用戶組成員以自己的映射驅動器等PowerShell的 - 與模塊
我與PowerGUI的編譯它,創造一個EXE文件。 問題是,該模塊在用戶計算機上不存在。
有沒有辦法做到這一點,沒有模塊,或將模塊添加到編譯?
我已經創建了基於Active-Directory模塊一個登錄腳本編譯,以便查詢用戶組成員以自己的映射驅動器等PowerShell的 - 與模塊
我與PowerGUI的編譯它,創造一個EXE文件。 問題是,該模塊在用戶計算機上不存在。
有沒有辦法做到這一點,沒有模塊,或將模塊添加到編譯?
對於組成員,你也可以得到它沒有連接到AD,並解析WHOAMI工具
$groups = WHOAMI /GROUPS /FO CSV | ConvertFrom-Csv | Select-Object -ExpandProperty 'Group Name'
if($groups -contains 'group1')
{
do something
}
一種方法是使用Active-Directory服務接口(ADSI)。
你可以在其他SO帖子(Can I match a user to a group accross different domains?)中找到一種方法來查找用戶所屬的所有組,使用ADSI,它是一個C#代碼,但它很容易翻譯。
這是一個簡單搜索開始的小例子。
Clear-Host
$dn = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://WM2008R2ENT:389/dc=dom,dc=fr","[email protected]","Pwd")
# Look for a user
$user2Find = "user1"
$Rech = new-object System.DirectoryServices.DirectorySearcher($dn)
$rc = $Rech.filter = "((sAMAccountName=$user2Find))"
$rc = $Rech.SearchScope = "subtree"
$rc = $Rech.PropertiesToLoad.Add("mail");
$theUser = $Rech.FindOne()
if ($theUser -ne $null)
{
Write-Host $theUser.Properties["mail"]
}
另一種方法是使用System.DirectoryServices.AccountManagement Namespace。
這種方式也使用ADSI,但它被封裝,並且您需要Framework .NET 3.5。您也可以在same post中找到,但在編輯(2011-10-18 13:25)部分,使用這種方式的C#代碼。
您還可以使用WMI:
$user2Find = "user1"
$query = "SELECT * FROM ds_user where ds_sAMAccountName='$user2find'"
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP"
$user.DS_mail
您可以在服務器上或從區域內部的計算機localy使用此解決方案,但它更復雜一點,從外域WMI認證。
不錯,謝謝! – Benny 2013-04-26 06:21:26
的輸出爲什麼不從你的DC或\\域\ SYSVOL給他們打電話? – 2013-04-26 02:22:07