Avatar billede morten_leth Nybegynder
11. februar 2005 - 09:20 Der er 9 kommentarer og
1 løsning

Hurtigt spørgsmål evt. maximus25?

Jeg skal lige bruge 2 ting... 2 ting som virkelig genere mig jeg ikke kan finde...
den ene er at jeg skal i en .txt fil jeg har som jeg dumber lidt data i, skal have lavet eks. 65 "-" karaktere i bunden af den data jeg dumber, jeg VED det kan lade sig gøre har set det, men kan sgu ikke finde lortet lige nu....

den anden ting er at jeg lige skal bruge hvordan man får vist "Display Name" for en useraccount i AD...

Det skal jeg bruge i samme forbindelse....

Jeg er ved at lave en lille script som ved at angive hvilken gruppe så skal den skrive til en .txt fil hvilke brugere der er medlem af den gruppe...

Jeg tror godt jeg selv kan flette det hele ind i mit script hvis bare jeg får et eller andet at gå ud fra.... håber du/i kan hjælpe mig....

/Leth
Avatar billede maximus25 Nybegynder
11. februar 2005 - 09:55 #1
Hejsa morten leth
Jeg er i udlandet med arbejdet, men kommer hjem sent i aften.....
Jeg kigger på det i morgen og smider en løsning til dig.
Avatar billede morten_leth Nybegynder
11. februar 2005 - 10:12 #2
okay bare i orden... bare RIGTIG træls at kunne se inde i sit hoved man har set det før på scrift også ikke kunne finde det igen....

Men jeg takker da endnu engang...
Avatar billede maximus25 Nybegynder
15. februar 2005 - 08:49 #3
Hej morten leth
For at lave en masse - i slutningen af dit script
kan du indsætte følgende linie:

    objTextFile.WriteLine"-----------"
 


Et simpelt script til at skrive "-" kunne være:

Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
    ("c:\script\test.txt", ForAppending, True)

 
    objTextFile.WriteLine"-----------"
   

objTextFile.Close




For at hente displayname ind fra ad:



strDisplayName = objUser.Get("displayName")
WScript.echo "displayName: " & strDisplayName

Håber du kan bruge det:):)
Avatar billede morten_leth Nybegynder
15. februar 2005 - 09:07 #4
er der ikke en funktion der hedder noget alá

objTextFile.WriteLine(65, "-") eller sådan noget...
så den automatisk skriver 65 tegn som er - tegnet... jeg synes at have set det et eller andet sted... ved sgu ikke lige hvor....
Avatar billede maximus25 Nybegynder
15. februar 2005 - 09:51 #5
Hej morten leth
Jeg mener det er i visula basic at der findes en sådan funktion.
Avatar billede morten_leth Nybegynder
15. februar 2005 - 13:50 #6
Nu er jeg løbet ind i et lidt andet problem som jeg lige skal have lidt hjælp til at løse, jeg er med på hvordan det skal laves, men hvordan kan jeg gøre så den tager alle de brugere der er i variablen strList og finder display name for dem, for derefter at kunne skrive det til txt filen????

Er lidt på bar bund... sætter lige pointene lidt op... ;)


Option explicit

dim strTitel, strDomain, strGroup, strList, objFSO, objTextFile, objUser, Network, shell, _
strL, GroupObj, UserObj, objFolder

const ForAppending = 8
Set Network = Wscript.CreateObject("Wscript.Network")
Set Shell = Wscript.CreateObject("Wscript.Shell")

StrL = Vbcrlf
StrDomain = Network.UserDomain
StrGroup = InputBox("Skriv en Gruppe:","En bruger","ggmag4azks")

If StrGroup = "" Then
Wscript.Echo "Der er ikke tastet noget ind !"
Else
Set GroupObj = GetObject("WinNT://" & StrDomain & "/" & StrGroup)
StrList = StrList & "Følgende brugere er medlem af " & StrGroup & ":" & StrL & strL
For Each UserObj In GroupObj.Members
StrList = StrList & UserObj.Name & StrL
Next

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    if objFSO.FolderExists("c:\scripts") = true then
        If objFSO.FileExists("C:\scripts\medlemskaber.txt") Then
            Set objFolder = objFSO.GetFile("C:\scripts\medlemskaber.txt")
                Set objTextFile = objFSO.OpenTextFile("c:\scripts\medlemskaber.txt", ForAppending, True)
                call txtfilen()
        else
                Set objTextFile = objFSO.CreateTextFile("c:\scripts\medlemskaber.txt", True)
                Set objFolder = objFSO.GetFile("C:\scripts\medlemskaber.txt")
                call txtfilen()
        End If
    else
    objFSO.CreateFolder("c:\scripts")
        If objFSO.FileExists("C:\scripts\users.txt") Then
            Set objFolder = objFSO.GetFile("C:\scripts\users.txt")
                Set objTextFile = objFSO.OpenTextFile("c:\scripts\medlemskaber.txt", ForAppending, True)
                call txtfilen()
        Else
                Set objTextFile = objFSO.CreateTextFile("c:\scripts\medlemskaber.txt", True)
                Set objFolder = objFSO.GetFile("C:\scripts\medlemskaber.txt")
                call txtfilen()
        End If
    end if
End If


Function txtfilen()
                objTextFile.WriteLine(StrList & vbCRLF)
                objTextFile.WriteLine"-----------"
                objTextFile.WriteLine()
                objTextFile.Close
end Function
Avatar billede morten_leth Nybegynder
15. februar 2005 - 13:51 #7
hmmm, man kan ikke give flere point længere.. det var da mystisk.. man plejer da at kunne klikke på pointene og ændre dem gør man ikke??????
Avatar billede morten_leth Nybegynder
15. februar 2005 - 13:54 #8
hov... du skal da have poitnene, for du har jo i realiteten svaret på det spørgsmål som jeg stillede... ;)
Avatar billede morten_leth Nybegynder
15. februar 2005 - 14:40 #9
Nu er jeg da kommet et skridt i den rigtige retning igen... ;) nu har jeg fået den til at skrive brugernavn og Display name ind i en txt fil... nu er mit problem så at den smider KUN den sidste bruger derind....

Option explicit

dim strTitel, strDomain, strGroup, strList, objFSO, objTextFile, objUser, Network, shell, _
strL, GroupObj, UserObj, objFolder, strUsername, strDN

const ForAppending = 8
Set Network = Wscript.CreateObject("Wscript.Network")
Set Shell = Wscript.CreateObject("Wscript.Shell")

StrL = Vbcrlf
StrDomain = Network.UserDomain
StrGroup = InputBox("Skriv en Gruppe:","En bruger","ggmag4azks")

If StrGroup = "" Then
Wscript.Echo "Der er ikke tastet noget ind !"
Else
Set GroupObj = GetObject("WinNT://" & StrDomain & "/" & StrGroup)

For Each UserObj In GroupObj.Members

StrList = UserObj.Name
strDN = GetUserDN(strList)
set ObjUser = Getobject("LDAP://" & strDN)
strUsername = objUser.Get("displayName")
next
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    if objFSO.FolderExists("c:\scripts") = true then
        If objFSO.FileExists("C:\scripts\medlemskaber.txt") Then
            Set objFolder = objFSO.GetFile("C:\scripts\medlemskaber.txt")
                Set objTextFile = objFSO.OpenTextFile("c:\scripts\medlemskaber.txt", ForAppending, True)
                call txtfilen()
        else
                Set objTextFile = objFSO.CreateTextFile("c:\scripts\medlemskaber.txt", True)
                Set objFolder = objFSO.GetFile("C:\scripts\medlemskaber.txt")
                call txtfilen()
        End If
    else
    objFSO.CreateFolder("c:\scripts")
        If objFSO.FileExists("C:\scripts\users.txt") Then
            Set objFolder = objFSO.GetFile("C:\scripts\users.txt")
                Set objTextFile = objFSO.OpenTextFile("c:\scripts\medlemskaber.txt", ForAppending, True)
                call txtfilen()
        Else
                Set objTextFile = objFSO.CreateTextFile("c:\scripts\medlemskaber.txt", True)
                Set objFolder = objFSO.GetFile("C:\scripts\medlemskaber.txt")
                call txtfilen()
        End If
    end if
End If

Function txtfilen()
                objTextFile.WriteLine("Følgende brugere er medlem af " & StrGroup & ":" & StrL & strL)
                objTextFile.WriteLine(StrList & vbTab & strUsername & vbCRLF)
                objTextFile.WriteLine"-----------"
                objTextFile.WriteLine()
                objTextFile.Close
end Function

' ---

' Converts a NT username in the current NetBIOS domains to the corresponding distinguished name
Function GetUserDN(strUserNTName)
  ' Declare variables
  Dim objRootDSE, strDNSDomain, objTrans, strNetBIOSDomain, strUserDN
  ' Create objects
  Set objTrans = CreateObject("NameTranslate")
  Set objRootDSE = GetObject("LDAP://RootDSE")
  ' Retrieve DNS domain name
  strDNSDomain = objRootDSE.Get("defaultNamingContext")
  ' Convert DNS domain name to NetBIOS domain name
  objTrans.Init 3, strDNSDomain
  objTrans.Set 1, strDNSDomain
  strNetBIOSDomain = objTrans.Get(3)
  ' Remove trailing backslash
  If Right(strNetBIOSDomain, 1) = "\" Then strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
  ' Enable internal errorhandling and clear errorlog
  On Error Resume Next
  Err.Clear
  ' Convert NT username to Distinguished Name
  objTrans.Init 1, strNetBIOSDomain
  objTrans.Set 3, strNetBIOSDomain & "\" & strUserNTName
  ' Check for error
  If Err.Number <> 0 Then
    GetUserDN = ""
  End If
  ' Clear errorlog and disable internal errorhandling
  Err.Clear
  On Error GoTo 0
  strUserDN = objTrans.Get(1)
  ' If the returned distinguished name doesn't contain a common name (CN), then the user doesn't exist
  If InStr(strUserDN, "CN") > 0 Then
    ' Return distinguished name of the user
    GetUserDN = strUserDN
  Else
    ' Return empty string
    GetUserDN = ""
  End If
End Function
Avatar billede morten_leth Nybegynder
15. februar 2005 - 16:49 #10
har fundet ud af det... takker for hjælpen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester