schmitty 10 Geschrieben 14. April 2008 Melden Teilen Geschrieben 14. April 2008 Hallo Zusammen, ich würde eine Batchdatei oder ein Script benötigen welches mir aus einem bestimmten Container meines AD's alle computer ausliest und diese dann in eine Textdatei ausgibt. Könnt ihr mir da helfen? Mit dsquery usw habe ich es nicht geschafft da hier ja der volle Pfad angezeigt wird also OU= usw usw. Bitte helft mir ;) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 14. April 2008 Melden Teilen Geschrieben 14. April 2008 Hallo Probiers mal so: FOR /F usebackq %%a IN (`dsquery computer "ou=test,dc=domain,dc=de" -o rdn`) DO echo %%a (wenn die Anfuehrungszeichen stoerenm vor das letzte a eine Tilde schreiben. ) cu blub Zitieren Link zu diesem Kommentar
schmitty 10 Geschrieben 14. April 2008 Autor Melden Teilen Geschrieben 14. April 2008 Danke für eure schnelle hilfe.. Hab da auch noch etwas gefunden... und ein wenig erweitert Option Explicit ' Liest eine Liste aller PCs aus dem Active Directory ' (OUs "Anwender-PCs") aus und gibt diese aus. Dim oLog 'TextLogfile Dim sLogFolder, sLogName 'Name des Log-Folder, Pfad der Log-Datei Dim fso 'Filesystem Objekt Dim sTemp 'temporäre String-Variable Dim WshShell 'Windows Shell '--- Variablen vorbelegen sLogFolder = "Logs\" sLogName = sLogFolder &"Server.txt" '--- Windows Shell initialisieren Set WshShell = CreateObject("WScript.Shell") 'Dateisystem bereitstellen Set fso = CreateObject("Scripting.FileSystemObject") '--- Text-Log öffnen TextLogOpen() call AlleUnterobjekteAuflisten("OU=", "computer", True) ' ========================================================================== Sub AlleUnterobjekteAuflisten(strRootContainer, varObjektTyp, varRekursiv) ' Gibt die Namen aller Objekte im angegebenen AD-Container aus. ' <strObjektTyp> Objekttyp, der ausgegeben werden soll (class - z.B. "user") ' Falls <varRekursiv> True ist, werden auch ggf. enthaltene OUs (Organisational Units) ' durchsucht. ' Aufruf, z.B.: ' call AlleUnterobjekteAuflisten("OU=Anwender-PCs,OU=Computer,OU=MyOrg,DC=myDomain,DC=de", _ ' "computer", True) Dim objRootContainer, objADObjekt, strPCName Const strDomainController = "DC" Set objRootContainer = GetObject("LDAP://" & strDomainController & "/" & strRootContainer) For Each objADObjekt In objRootContainer If objADObjekt.class = varObjektTyp Then ' Gesuchter Objekttyp gefunden strPCName = LCase(objADObjekt.cn) TextLogWrite(strPCName) 'WScript.Echo strPCName End If If objADObjekt.class = "organizationalUnit" And varRekursiv = True Then Call AlleUnterobjekteAuflisten(objADObjekt.distinguishedName, _ varObjektTyp, varRekursiv) End If Next Set objRootContainer = Nothing Set objADObjekt = Nothing End Sub '--- Text-Log schließen TextLogClose() function TextLogOpen() if not fso.FolderExists(sLogFolder) then FSO.CreateFolder(sLogFolder) On Error Resume Next Err.Clear set oLog = fso.OpenTextFile(sLogName,2,true) if err.Number <> 0 then MsgBox("Das Logfile ist bereits geöffnet. Das Skript wurde wahrscheinlich schon von einem " & _ "Kollegen gestartet. Einfach mal in den Raum hineinfragen hilft... :-)" & vbCrLf & _ "Skript wird abgebrochen.") WScript.Quit end if On Error Resume Next end function function TextLogClose() oLog.Close() end function function TextLogWrite(sText) oLog.Writeline(sText) end function Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 14. April 2008 Melden Teilen Geschrieben 14. April 2008 Hi, Wenn du die Flexibilität eines Skriptes und die Kompaktheit einer DOS-Batch haben willst, dann hole dir die Powershell von Microsoft Download Center + die CommunityExtensions von PowerShell Community Extensions - Home. "get-help get-ADObject" macht dich dann richtig glücklich :) cu blub Zitieren Link zu diesem Kommentar
schmitty 10 Geschrieben 14. April 2008 Autor Melden Teilen Geschrieben 14. April 2008 na das werd ich dann doch mal ausprobieren Zitieren Link zu diesem Kommentar
Caddy24 10 Geschrieben 14. April 2008 Melden Teilen Geschrieben 14. April 2008 Kleine Offtopic-Ergänzung: Es gibt auch noch eine nette Erweiterung für die Powershell, mit der man auch Einträge ändern kann: PowerShell Commands for Active Directory by Quest Software Zitieren Link zu diesem Kommentar
Okular 10 Geschrieben 14. April 2008 Melden Teilen Geschrieben 14. April 2008 Grundsätzlich würde ich im Domänen-Kontext immer zu der Powershell greifen; da hat man einfach tierisch viele Möglichektien, gerade auch in Verbindung mit den .Net-Klassen. Okular Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.