2013-04-25 9 views
5

मैं सक्रिय निर्देशिका मॉड्यूल के आधार पर एक लॉग-ऑन स्क्रिप्ट बनाया है साथ संकलन, कि उनके ड्राइव आदि को मैप करने के क्रम में उपयोगकर्ता समूह सदस्यता प्रश्नोंPowershell - मॉड्यूल

मैं PowerGui के साथ तैयार की है, और बनाया एक EXE फ़ाइल। समस्या यह है कि मॉड्यूल कंप्यूटर कंप्यूटर पर मौजूद नहीं है।

क्या मॉड्यूल के बिना ऐसा करने का कोई तरीका है, या संकलन में मॉड्यूल जोड़ें?

+0

के उत्पादन को पार्स सकता है क्यों नहीं उन्हें अपने डीसी या \\ डोमेन \ Sysvol से कहते हैं? –

उत्तर

2

समूह सदस्यता के लिए, आप भी ई से कनेक्ट होने के बिना यह मिलता है, और Whoami उपयोगिता

$groups = WHOAMI /GROUPS /FO CSV | ConvertFrom-Csv | Select-Object -ExpandProperty 'Group Name' 

if($groups -contains 'group1') 
{ 
    do something 
} 
1

एक तरीका सक्रिय-निर्देशिका सेवा इंटरफ़ेस (ADSI) का उपयोग कर रहा है।

आप एक और एसओ पोस्ट (Can I match a user to a group accross different domains?) में एडीएसआई का उपयोग कर उपयोगकर्ता के सभी समूहों को खोजने के लिए एक तरीका ढूंढ सकते हैं, पोस्ट में यह एक सी # कोड है, लेकिन इसका अनुवाद करना आसान है।

यहां शुरू करने के लिए एक सरल खोज का एक छोटा सा उदाहरण है।

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 उपयोग करने के लिए है।

इस तरह एडीएसआई का भी उपयोग कर रहा है, लेकिन यह encapsulated है, और आपको फ्रेमवर्क .NET 3.5 की आवश्यकता है। आपको same post में भी मिलेगा लेकिन संपादित (2011-10-18 13:25) भाग में, इस तरह से एक सी # कोड।

तुम भी 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 को प्रमाणित करने में थोड़ा और अधिक जटिल है ।

+0

अच्छा एक, धन्यवाद! – Benny