Ich habe den Netzwerk-Login-Namen eines Benutzers. Von PowerShell und WMI ist es möglich, eine gültige E-Mail für diesen Benutzer zu erhalten? Beachten Sie, dass sich der Anmeldename von dem Namen in der E-Mail unterscheidet, sodass ich den Anmeldenamen nicht einfach mit der E-Mail-Domäne kombinieren kann.Erhalten Sie die E-Mail-Adresse eines Benutzers aus dem Benutzernamen über PowerShell und WMI?
Antwort
Der einfachste Weg ist die Verwendung von Active-Directory.
Da Sie PowerShell-Tag und nicht PowerShell V2.0 verwenden, können Sie ADSI verwenden.
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"]
}
Sie können auch userPrincipalName
anstelle von sAMAccountName
im Filter für userPrincipalName
können Sie user @ domain Formular.
Mit WMI: Wenn Sie absolutly es mit WMI tun wollen.
$user2Find = "user1"
$query = "SELECT * FROM ds_user where ds_sAMAccountName='$user2find'"
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP"
$user.DS_mail
können Sie die zweite Lösung verwenden localy auf Ihrem Server oder von einem Computer innerhalb der Domäne, aber es ist ein wenig komplizierter aus Ländern außerhalb der Domäne zu WMI zu authentifizieren.
Mit Powershell 2,0
Import-Module activedirectory
$user2Find = "user1"
$user = Get-ADUser $user2Find -Properties mail
$user.mail
Hier ist eine andere Art und Weise (original source):
PS> [adsisearcher].FullName
System.DirectoryServices.DirectorySearcher
PS> $searcher = [adsisearcher]"(objectClass=user)"
PS> $searcher
CacheResults : True
ClientTimeout : -00:00:01
PropertyNamesOnly : False
Filter : (objectClass=user)
PageSize : 0
PropertiesToLoad : {}
ReferralChasing : External
SearchScope : Subtree
ServerPageTimeLimit : -00:00:01
ServerTimeLimit : -00:00:01
SizeLimit : 0
SearchRoot :
Sort : System.DirectoryServices.SortOption
Asynchronous : False
Tombstone : False
AttributeScopeQuery :
DerefAlias : Never
SecurityMasks : None
ExtendedDN : None
DirectorySynchronization :
VirtualListView :
Site :
Container :
PS> $searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
PS> $searcher.FindOne().Properties.mail
Ich brauchte nur die zwei letzten Zeilen in dieser Antwort, damit es funktioniert. –
Nicht WMI, aber genauso gut die Arbeit erledigen kann:
PS> ([adsi]"WinNT://$env:USERDOMAIN/$env:USERNAME,user").Properties["mail"]
- 1. powershell wmi-objekt | Wählen Sie
- 2. Erhalten Sie alle Gruppen eines Facebook-Benutzers
- 3. So erhalten Sie die Feeds des Benutzers, dem Sie folgen
- 4. Erstellen eines MongoDB-Benutzers über die Befehlszeile
- 5. WMI: Registrieren Sie Assembly mit WMI-Repository über InstrumentationManager.RegisterAssembly
- 6. Mit der Facebook-API, kann ich die Benutzer-ID eines Benutzers mit dem Benutzernamen herausfinden? Kurz
- 7. Ziel C: Benachrichtigungen über den Ruhezustand eines Benutzers erhalten
- 8. So erhalten Sie die E-Mail-ID eines StackExchange-Benutzers über die API
- 9. Wie erhalten Sie mit dem Reporting Services-Webdienst die Berechtigungen eines bestimmten Benutzers?
- 10. So messen Sie die Besuchszeit eines Benutzers
- 11. Zurückgeben eines Objekts aus dem PowerShell-Cmdlet
- 12. Computer remote an Domäne mit Powershell und WMI anschließen
- 13. Automatische Updates über WMI
- 14. Speichern wmi Abfrage in Array Powershell
- 15. Gibt es eine Möglichkeit, den Benutzernamen eines SVN-Benutzers über den gesamten Repository-Verlauf zu ändern?
- 16. Mit Powershell erhalten Sie die Wochentagsnummer?
- 17. Kann ich die kanonische ID eines Benutzers über die Befehlszeile erhalten?
- 18. Erhalten Sie den vollständigen Benutzernamen einen neuen Benutzernamen
- 19. PowerShell-Skript aus dem Ordner Programme über VBScript ausführen
- 20. Den Benutzernamen des Benutzers erhalten, der auf die ASP.NET-Intranetseite im lokalen Netzwerk zugreift.
- 21. Powershell entfernt Komma aus dem Programmargument
- 22. Validieren Sie das Passwort eines Benutzers mit dem Hash?
- 23. Die OneNote-API kann keine Notizen aus dem freigegebenen Notizbuch zur Freigabe des Benutzers erhalten.
- 24. Erhalten Sie die tatsächlichen Adapterinformationen nur mithilfe von WMI-Abfrage?
- 25. Wie erhalten Sie Informationen über Eigenschaften von Powershell-Objekt?
- 26. Rufen Sie eine Exe von PowerShell und erhalten Sie Feedback über Erfolg oder Misserfolg
- 27. Können Sie eine Bildschirmgröße/Auflösung eines Benutzers mit Javascript erhalten?
- 28. PowerShell WMI zeigt den gleichen Wert
- 29. WMI-Abfrage auf einem Remote-Computer in Powershell
Wow, was für eine komplette Antwort! Vielen Dank! Die WMI-Version funktioniert für mich. Ich werde auch die 2.0-Version ausprobieren. –