Ответ 1
Самый простой способ - использовать Active Directory.
Поскольку вы используете тег PowerShell, а не PowerShell V2.0, вы можете использовать ADSI.
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"]
}
Вы также можете использовать userPrincipalName
вместо sAMAccountName
в фильтре, для userPrincipalName
вы можете использовать форму user @domain.
Использование WMI. Если вы абсолютно хотите сделать это с помощью 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 из-за пределов домена.
Использование PowerShell 2.0
Import-Module activedirectory
$user2Find = "user1"
$user = Get-ADUser $user2Find -Properties mail
$user.mail