u0206084
Goto Top

VBS ausgabe in der Textdatei Ausrichten, Formatieren

Hallo

Ich lese anhand folgenden Scriptes das AD aus und leite die Ausgabe in eine Textdatei um, leider ist die Ausgabe nicht bündig untereinander sondern verschoben. Wer kann mir helfen die Ausrichtung des Textes anzupassen.

Mein Script:

strDom = "Rm1.dom"
Const FRIST =14

Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000

Set objDomainNT = GetObject("WinNT:" & strDom)
intMaxPwdAge = objDomainNT.Get("MaxPasswordAge")
If intMaxPwdAge <= 0 Then
WScript.Echo "Max Passwortalter ist 0, Passwörter laufen nicht ab!"
WScript.Quit
End If
intMaxPwdAge = Int(intMaxPwdAge / 86400)


Set oGroup = GetObject("WinNT:
" & strDom & "/Domain Users")


For Each oObject In oGroup.Members


Set oUser = GetObject(oObject.ADsPath)
intCurrentValue = oUser.UserFlags
If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then
'WScript.Echo oUser.Name & ": Passwort läuft niemals ab."
Else
intPasswordAge = oUser.PasswordAge
dtmChangeDate = DateAdd("s", -intPasswordAge, Now)
'WScript.Echo oUser.Name & ": Passwort zuletzt geändert: " & dtmChangeDate
intExpire = DateDiff("d", Now, dtmChangeDate) + intMaxPwdAge
If intExpire <= 0 Then 'abgelaufen
strMessage = oUser.Name & ": abgelaufen - Tage: " & -intExpire
ElseIf intExpire <= FRIST Then 'demnächst
strMessage = "Passwort des Benutzer" & vbtab & oUser.Name & vbtab &"("& oUser.Fullname &")" & vbTab & vbTab &"laueft in " & intExpire & " Tagen ab"& vbCRLF
WScript.Echo strMessage

End If


End If
Next

Content-Key: 53332

Url: https://administrator.de/contentid/53332

Printed on: April 19, 2024 at 08:04 o'clock

Member: bastla
bastla Mar 06, 2007 at 15:25:44 (UTC)
Goto Top
Hallo u0206084!

Du könntest die beiden Functions "FormL" und "FormR" dazu verwenden, einen String links- oder rechtsbündig ausgerichtet mit Leerstellen auf eine bestimmte Länge zu ergänzen - für eine vernünftige Darstellung des Ergebnisses ist aber ein Font mit einer fixen Breite (à la "Courier New" erforderlich).

Zusammen mit einer kleinen Demo sähe das so aus:
'FormatDemo.vbs  
For i = 1 To 20
	L = FormL(String(i, "X"), 20)  
	R = FormR(String(i, "0"), 20)  
	WScript.Echo L & "|" & R  
Next


Function FormL(EinText, Stellen)
If Stellen > Len(EinText) Then
	FormL = Left(EinText & Space(Stellen), Stellen)
Else
	FormL = EinText
End If
End Function

Function FormR(EinText, Stellen)
If Stellen > Len(EinText) Then
	FormR = Right(Space(Stellen) & EinText, Stellen)
Else
	FormR = EinText
End If
End Function

Grüße
bastla

[Edit] Die Demo ist natürlich für eine Verwendung per Commandline, also etwa "cscript //nologo FormatDemo.vbs > FormatDemo.txt" gedacht ... [/Edit]
Member: u0206084
u0206084 Mar 08, 2007 at 08:58:32 (UTC)
Goto Top
Hallo bastla,
nett das du mir schon wieder versuchst zu helfen, leider habe ich keine ahnung wie ich dein Script in das obige inplementieren kann.

aAso wenn du Zeit und Lust hast wäre ich dir dankbar.

Gruß
Member: Biber
Biber Mar 08, 2007 at 10:11:11 (UTC)
Goto Top
Moin u02060084,

strDom = "Rm1.dom"  
Const FRIST =14

Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000

Set objDomainNT = GetObject("WinNT://" & strDom)  
intMaxPwdAge = objDomainNT.Get("MaxPasswordAge")  
If intMaxPwdAge <= 0 Then
    WScript.Echo "Max Passwortalter ist 0, Passwörter laufen nicht ab!"  
    WScript.Quit
End If
intMaxPwdAge = Int(intMaxPwdAge / 86400)

Set oGroup = GetObject("WinNT://" & strDom & "/Domain Users")  

For Each oObject In oGroup.Members

     Set oUser = GetObject(oObject.ADsPath)
     intCurrentValue = oUser.UserFlags
     If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then
         'WScript.Echo oUser.Name & ": Passwort läuft niemals ab."  
     Else
         intPasswordAge = oUser.PasswordAge
         dtmChangeDate = DateAdd("s", -intPasswordAge, Now)  
         'WScript.Echo oUser.Name & ": Passwort zuletzt geändert: " & dtmChangeDate  
         intExpire = DateDiff("d", Now, dtmChangeDate) + intMaxPwdAge  
         If intExpire <= 0 Then 'abgelaufen  
            strMessage = Pad( oUser.Name, 15) & ": abgelaufen - Tage: " & -intExpire  
         ElseIf intExpire <= FRIST Then 'demnächst  
           strMessage = "Passwort des Benutzer" & vbtab & Pad(oUser.Name, 15) & _   
             vbtab &"("& Pad(oUser.Fullname, 25) &")" & vbTab & vbTab &"laueft in " & Pad(intExpire, 2) & " Tagen ab"& vbCRLF  
              WScript.Echo strMessage

          End If

     End If
Next
Wscript.quit()
Function Pad( EinString, Fixlen)
   Pad = Left( cStr(EinString) & Space(FixLen), FixLen)
End Function
[ungetestete Skizze]

Gruss
Biber
Member: bastla
bastla Mar 08, 2007 at 13:17:27 (UTC)
Goto Top
@Biber

Die Function würde vielleicht besser "PadOrCut()" heißen - oder auch "Procrustes()" ...

Grüße
bastla
Member: u0206084
u0206084 Mar 09, 2007 at 14:42:25 (UTC)
Goto Top
Vilen Danke für euere Hilfe hat Prima geklappt.

Danke