2013-04-25 13 views
5

ho creato uno script di log-on basato su Active Directory-Module, che interroga l'appartenenza al gruppo dell'utente al fine di mappare le sue pulsioni eccPowerShell - Compilazione moduli con

ho compilato con PowerGUI, e ha creato un file EXE. il problema è, il modulo non esiste sui computer degli utenti.

C'è un modo per farlo senza il modulo o aggiungere il modulo alla compilazione?

+0

Perché non chiamare con il DC o \\ Dominio \ Sysvol? –

risposta

2

Per appartenenze a gruppi, si potrebbe anche ottenere senza la connessione ad AD, e analizzare l'output del programma di utilità WHOAMI

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

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

Un modo è l'utilizzo di Active Directory Service Interface (ADSI).

è possibile trovare in un altro post SO (Can I match a user to a group accross different domains?) un modo per trovare tutti i gruppi a cui appartiene un utente, utilizzando ADSI, nel post è un codice C#, ma è facile da tradurre.

Ecco un piccolo esempio di una semplice ricerca per iniziare.

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"] 
} 

Un altro modo è quello di utilizzare System.DirectoryServices.AccountManagement Namespace.

In questo modo si utilizza anche ADSI, ma è incapsulato e si necessita di Framework .NET 3.5. Troverete anche nel same post ma nella parte Modificata (2011-10-18 13:25), un codice C# utilizzando in questo modo.

È inoltre possibile utilizzare WMI:

$user2Find = "user1" 
$query = "SELECT * FROM ds_user where ds_sAMAccountName='$user2find'" 
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP" 
$user.DS_mail 

È possibile utilizzare questa soluzione localy sul server o da un computer all'interno del dominio, ma è un po 'più complicato per l'autenticazione a WMI dal di fuori del dominio .

+0

Bello, grazie! – Benny