Saya memiliki skrip PS yang memeriksa beberapa properti pengguna khusus di Active Directory. Salah satu properti adalah "Manajer".

 $data = Get-ADUser $user -Properties * |  Select-Object DisplayName, LockedOut, Enabled, LastLogonDate, PasswordExpired, EmailAddress, Company, Title, Manager, Office

 Write-Host "9." $user "manager is" $data.manager -ForegroundColor Green

Ketika saya menjalankan skrip, saya mendapatkan:

User's manager is CN=cool.boss,OU=Users,OU=SO,OU=PL,OU=RET,OU=HBG,DC=domain,DC=com

Masalahnya adalah teks "OU=SO,OU=PL,OU=RET,OU=HBG,DC=domain,DC=com" akan berbeda untuk beberapa pengguna

Bagaimana saya bisa mengubah keluaran dan menghapus semuanya kecuali "cool.boss"? Terima kasih sebelumnya

3
Stan Di 12 Mei 2021, 14:30

3 jawaban

Jawaban Terbaik

Ini harus menjadi cara yang lebih atau kurang aman dan masih mudah untuk menguraikannya:

($data.manager -split "," | ConvertFrom-StringData).CN
2
marsze 12 Mei 2021, 12:03

Anda dapat menggunakan regex untuk itu:

$s = "CN=cool.boss,OU=Users,OU=SO,OU=PL,OU=RET,OU=HBG,DC=domain,DC =com"

$pattern = [regex]"CN=.*?OU"
$r = $pattern.Replace($s, "CN=OU")
$r
1
Frenchy 12 Mei 2021, 11:41

Anda dapat menggunakan metode .split() untuk mendapatkan apa yang Anda inginkan.

$DN = "CN=cool.boss,OU=Users,OU=SO,OU=PL,OU=RET,OU=HBG,DC=domain,DC =com"
$DN.Split(',').Split('=')[1]

Apa yang saya sarankan, adalah melemparkannya ke Get-ADUser lain untuk mendapatkan nama tampilan untuk keluaran yang lebih rapi(:

2
Abraham Zinala 12 Mei 2021, 11:59