Geçerli etki alanı kullanıcısının tam adını alın


23

PowerShell kullanarak, şu anda oturum açmış olan etki alanı kullanıcısının tam adını (yalnızca kullanıcı adını değil) ActiveDirectory modülüne ihtiyaç duymadan nasıl alabilirim?

Yanıtlar:


24
$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").fullname

İade:

John Doe

Bazı diğer (çoğunlukla) karanlık özellikler de mevcuttur. Birkaç yararlı olanlar:

  • Homedrive UNC
  • Homedrive Mektubu
  • Açıklama
  • Giriş betiği

Deneyin:

[adsi]"WinNT://$dom/$usr,user" | select *

3
İyi cevap. Tabii ki, bu bir AD'yi sorgulama ... :)
Massimo

1
Bu komutu çalıştırmak için etki alanı yönetici haklarına ihtiyacım var mı? Veya etki alanı kullanıcısı bu komutu çalıştırabilir mi?
Jonathan Rioux

1
Herhangi bir etki alanı kullanıcısı, bu tür bilgiler için AD'yi sorgulayabilir.
Massimo

1
@Massimo Hiçbir etki alanı kullanıcısı bu tür bilgiler için AD'yi sorgulayamaz. Kullanıcılara "Hesap kısıtlamalarını oku" izni verilmez (veya reddedilemez) ve Active Directory'den herhangi bir veriyi sorgulayamazlar
Ian Boyd

15

Kabul edilen cevabı beğendim ama sadece bunu kendim denemek istediğim için:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName

döner:

FullName
--------
TheCleaner

veya başlık bilgisini ve sadece sonucu elde etmek istemiyorsanız:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide

Bunu çok hızlı okudum, AD sorgusu yok . Sözlü olarak oyumu geri çekerim.
MDMoore313

2
Ancak AD PS modüllerini gerektirmez
squillman 17:14

3
@squillman değil, sadece Cleaner'a zor anlar yaşatıyor.
MDMoore313

Yakaladım. Üzgünüz, kafeini alınmış olmalı ...
squillman

7

Powershell 3.0 kullanan bir astar:

gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders

3

Craig620'nin kabul edilen cevabı hakkındaki yorumuna dayanarak,

Bu komutu çalıştırmak için etki alanı yöneticisi haklarına ihtiyacım var mı? Veya etki alanı kullanıcısının kendisi bu komutu çalıştırabilir mi?

Kullanıcı iş istasyonlarına powershell modülleri kurmaktan kaçınmaya çalışıyorsunuz gibi görünüyor, evet, ama aynı zamanda, hayır, AD'de kendi adınızı aramak için bir etki alanı yöneticisi olmanıza gerek yok. Standart kullanıcı olarak tam adı da dahil olmak üzere Outlook'taki GAL'de görünen tüm bilgileri hemen hemen arayabilirsiniz.

AD’de başkalarının tam adlarını standart bir kullanıcı olarak da arayabilirsiniz ( Get-WmiObject Win32_userAccountAD modüllerinden kaçınmak istiyorsanız). AD'yi sorgulayan hizmet hesapları (yani, yönetilen hizmet hesaplarından önce ) genellikle standart, ayrıcalıklı olmayan AD kullanıcılarıdır.


1

-Match kullanımı iyi bir seçim değildir çünkü "en": "ed" adlı bir USERNAME "fred" ve "edith" ile eşleşecektir. Bunun yerine tam bir eşleşme için -eq kullanın ve gerekirse etki alanına ekleyin. Önde gelen ve izleyen bir yeni satır basan "fullname | ft -HideTableHeaders" seçeneğine alternatif olarak tüm önde gelen bir boşluk alanını çıkarmak için bir foreach döngüsü kullanıyorum.

gwmi win32_useraccount | where {$_.caption -eq $("domain\" + $env:USERNAME)} | foreach {$_.fullname}

1

Her zaman .Net 3.5 veya yukarısına sahipseniz (ki bu PowerShell v4.0 ve üzeri sürümlerde olmalıdır):

Add-Type -AssemblyName System.DirectoryServices.AccountManagement;
$DisplayName = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.DisplayName;

Bu sınıf, tüm genel LDAP özelliklerine çok kolay erişim sağlar; bu nedenle [ADSISearcher], WinNT'nin uygulayamadığı bazı genişletilmiş özellikler istiyorsanız, iki kez aramanız (bir kez WinNT ve tekrar LDAP ile) veya LDAP araması yapmak için kullanmanız gerekmez. .


0

Active Directory modülünü kullanmak istemiyorsanız, kullanamazsınız; daha derine inip bir etki alanı denetleyicisine karşı gerçek bir LDAP sorgusu gerçekleştirmek istemediğiniz sürece.

Kullanıcı adı dışındaki herhangi bir kullanıcı bilgisi Active Directory'de saklanır ve o adrese götürülmelidir.


Ancak başlat menüsünü açtığımda, kullanıcının tam adı burada gösteriliyor! Demek istediğim, bir yere mi saklanmak zorunda?
Jonathan Rioux

4
Evet, bir yerlerde saklanmış. Active Directory'de depolanır.
Katherine Villyard

Muhtemelen kayıt defterinde de saklanır / önbelleğe alınır, ancak kolayca bulamadım ve pes ettim.
mfinni

1
AD'de depolandığı doğrudur, ancak [ADSI]arabirim AD modüllerinden çok daha uzun sürdü ve kabul edilen yanıtın gösterdiği gibi tüm bu kadar karmaşık değil.
Hunter Eidson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.