PowerShell-VBScript und AltSecurityIdentities
Hallo
Hallo,
ich habe ein kleines Problem und ja Scripting liegt mir nicht direkt. Aber ich muss mich gerade darin einfitzen für Import von Daten ins AD.
Bisher bin ich soweit das ich mittels einer csv Datei und 2 PowerShell Befehlen, Computerkonten anlegen kann und den servicePrincipalNames setzen kann aus der csv Datei ebenfalls heraus.
Die Anzahl der Computerkonten umfasst 5000, daher dieser Weg und nicht alles händisch.
Das was noch fehlt ist das setzen des altSecurityIdentities.
Gefunden habe ich momentan das hier, was als VBS Script nutzbar wäre.
Aber wie bekomme ich es hin, dass die Daten aus der csv gelesen werden und an den beiden Stellen markiert der Client-Name eingetragen wird, oder evtl. aus dem AD ausgelesen da eingetragen wird.
Original:
Const ADS_PROPERTY_APPEND = 3
Set oUser = GetObject ("LDAP:CN=Josef Novak,OU=CertTest,dc=contoso,dc=com")
oUser.PutEx ADS_PROPERTY_APPEND, "altSecurityIdentities", _
Array("X509:<I>S=Czech
Republic,L=Praque,O=Contoso,E=josefn@xxxxxxxxxxx,CN=Josef Novak<S>S=Czech
Republic,L=Praque,O=Contoso,E=josefn@xxxxxxxxxxx,CN=Josef Novak")
oUser.SetInfo
Idee:
Const ADS_PROPERTY_APPEND = 3
Set oUser = GetObject ("LDAP:CN=HIER CLIENTNAME,CN=Computers,dc=XXXX,dc=local")
oUser.PutEx ADS_PROPERTY_APPEND, "altSecurityIdentities", _
Array("X509:<I>DC=local,O=XXXX,OU=XX,CN=XXXX,E=XXXXX<S>DC=local,O=XXXX,OU=XX,CN=HIER CLIENTNAME")
oUser.SetInfo
Im Endeffekt hätte ich erstmal 3 Befehle separat, was mir vorerst reicht. Auch wenn man vielleicht alles direkt zusammenfassen kann, aber da liegt momentan mein Problem, das ich es nicht weis..
Hallo,
ich habe ein kleines Problem und ja Scripting liegt mir nicht direkt. Aber ich muss mich gerade darin einfitzen für Import von Daten ins AD.
Bisher bin ich soweit das ich mittels einer csv Datei und 2 PowerShell Befehlen, Computerkonten anlegen kann und den servicePrincipalNames setzen kann aus der csv Datei ebenfalls heraus.
Die Anzahl der Computerkonten umfasst 5000, daher dieser Weg und nicht alles händisch.
Das was noch fehlt ist das setzen des altSecurityIdentities.
Gefunden habe ich momentan das hier, was als VBS Script nutzbar wäre.
Aber wie bekomme ich es hin, dass die Daten aus der csv gelesen werden und an den beiden Stellen markiert der Client-Name eingetragen wird, oder evtl. aus dem AD ausgelesen da eingetragen wird.
Original:
Const ADS_PROPERTY_APPEND = 3
Set oUser = GetObject ("LDAP:CN=Josef Novak,OU=CertTest,dc=contoso,dc=com")
oUser.PutEx ADS_PROPERTY_APPEND, "altSecurityIdentities", _
Array("X509:<I>S=Czech
Republic,L=Praque,O=Contoso,E=josefn@xxxxxxxxxxx,CN=Josef Novak<S>S=Czech
Republic,L=Praque,O=Contoso,E=josefn@xxxxxxxxxxx,CN=Josef Novak")
oUser.SetInfo
Idee:
Const ADS_PROPERTY_APPEND = 3
Set oUser = GetObject ("LDAP:CN=HIER CLIENTNAME,CN=Computers,dc=XXXX,dc=local")
oUser.PutEx ADS_PROPERTY_APPEND, "altSecurityIdentities", _
Array("X509:<I>DC=local,O=XXXX,OU=XX,CN=XXXX,E=XXXXX<S>DC=local,O=XXXX,OU=XX,CN=HIER CLIENTNAME")
oUser.SetInfo
Im Endeffekt hätte ich erstmal 3 Befehle separat, was mir vorerst reicht. Auch wenn man vielleicht alles direkt zusammenfassen kann, aber da liegt momentan mein Problem, das ich es nicht weis..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188680
Url: https://administrator.de/forum/powershell-vbscript-und-altsecurityidentities-188680.html
Ausgedruckt am: 08.04.2025 um 11:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo black-one und willkommen im Forum!
Für eine CSV-Datei "D:\Computers.csv" mit nur einer Spalte (= in jeder Zeile ein Computername) ginge das in VBS (ungetestet) etwa so:
Grüße
bastla
Für eine CSV-Datei "D:\Computers.csv" mit nur einer Spalte (= in jeder Zeile ein Computername) ginge das in VBS (ungetestet) etwa so:
CSV = "D:\Computers.csv"
Const ADS_PROPERTY_APPEND = 3
Computers = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(CSV).ReadAll, vbCrLf)
For Each Computer In Computers
If Trim(Computer) <> "" Then 'Leerzeilen überspringen
Set oUser = GetObject ("LDAP://CN=" & Computer & ",CN=Computers,dc=XXXX,dc=local")
oUser.PutEx ADS_PROPERTY_APPEND, "altSecurityIdentities", _
Array("X509:<I>DC=local,O=XXXX,OU=XX,CN=XXXX,E=XXXXX<S>DC=local,O=XXXX,OU=XX,CN=" & Computer)
oUser.SetInfo
End If
Next
bastla
Hallo black-one!
Grüße
bastla
lässt sich da evtl. noch nen Fenster einbauen, das man sieht wie weit er ist. Sonst sieht man nicht ob er erfolgreich war oder was fehlt, etc.. Geht das sowas?
Zumindest den Fortschritt kannst Du bei einem Start über "cscript D:\DasScript.vbs"
" aus dem CMD-Fenster verfolgen, wenn die Schleife etwas angepasst wird:CSV = "D:\Computers.csv"
Const ADS_PROPERTY_APPEND = 3
Computers = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(CSV).ReadAll, vbCrLf)
Anzahl = UBound(Computers)
For i = 0 To Anzahl
WScript.Echo "Verarbeite " & i & " von " & Anzahl
If Trim(Computers(i)) <> "" Then 'Leerzeilen überspringen
Set oUser = GetObject ("LDAP://CN=" & Computers(i) & ",CN=Computers,dc=XXXX,dc=local")
oUser.PutEx ADS_PROPERTY_APPEND, "altSecurityIdentities", _
Array("X509:<I>DC=local,O=XXXX,OU=XX,CN=XXXX,E=XXXXX<S>DC=local,O=XXXX,OU=XX,CN=" & Computers(i))
oUser.SetInfo
End If
Next
bastla
Hallo black-one!
Sorry - kann ich nicht nachvollziehen; beide Schleifen machen das Gleiche ...
... aber Du könntest auch die erste Variante noch etwas informativer machen, indem Du vor Zeile 8 einfügst
- dann aber ebenfalls über "
Grüße
bastla
Sorry - kann ich nicht nachvollziehen; beide Schleifen machen das Gleiche ...
... aber Du könntest auch die erste Variante noch etwas informativer machen, indem Du vor Zeile 8 einfügst
WScript.Echo Computer
cscript
" starten, da ansonsten für jeden Computer eine MsgBox wegzuklicken wäre ...Grüße
bastla