Kleine Tipps für Zwischendurch (Teil 22) – Anmelden an eine andere Domäne

Muss man sich beim Zugriff auf ein ActiveDirectory erst einmal an der Domäne anmelden, kommt man mit [ADSI] nicht zum Ziel. Man muss die DirectoryEntry-Klasse direkt instanzieren und dabei neben dem Computernamen (oder der IP-Adresse) auch Benutzerkonto und Kennwort angeben:

$AD = new-object System.DirectoryServices.DirectoryEntry „LDAP://<Servername>, „Benutzername“, „Kennwort“

Ob die Anmeldung erfolgreich war erfährt man aber erst, wenn man über den Zugriff auf eine Property die Bindung erzwingt, z.B. über ein $AD.psbase,children

Ein wenig ungünstig ist natürlich, dass das Kennwort im Klartext angegeben werden muss (ein SecureString wäre natürlich besser und vor allem konsistenter), aber das ist kein unlösbares Problem, denn wie sich ein SecureString entgegennehmen und in eine lesbare Form umwandeln lässt, sollte bekannt sein:

a) Entgegennehmen des Kennworts über Read-Host

Write-host „Kennwort? “ -NoNewLine
$Pw= read-host -AsSecureString

b) Lesbar machen des SecureString

function Get-SecureString
($SecString)
{
$PtrStr = [IntPtr][Runtime.InteropServices.Marshal]::SecureStringToBstr($SecString)
$PwLesbar = [Runtime.InteropServices.Marshal]::PtrToStringBSTR($PtrStr)
# Aufräumen ist nicht unbedingt erforderlich
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($PtrStr)
$SecString.Dispose()
return $PwLesbar
}

$AD = new-object System.DirectoryServices.DirectoryEntry „LDAP://<Servername>, „Benutzername“, Get-SecureString($Pw)

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s