2013-04-25 5 views
5

я создал сценарий входа в систему, основанную на активной-директории модуля, который запрашивает членство в группе пользователей, чтобы отобразить его диски и т.д.Powershell - Компиляция с модулями

Я составил его PowerGUI, и создал EXE-файл. проблема заключается в том, что модуль не существует на компьютерах пользователей.

Есть ли способ сделать это без модуля или добавить модуль в компиляцию?

+0

Почему бы не назвать их из DC или \\ домен \ Sysvol? –

ответ

2

Для членства в группах, вы также можете получить его без подключения к AD, и разобрать вывод WHOAMI утилиты

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

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

Один из способов - использовать интерфейс службы 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 

Вы можете использовать это решение, локальный на сервере или с компьютера внутри домена, но это немного сложнее для проверки подлинности WMI из-за пределы домена ,

+0

Хороший, спасибо! – Benny

Смежные вопросы