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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53332
Url: https://administrator.de/forum/vbs-ausgabe-in-der-textdatei-ausrichten-formatieren-53332.html
Ausgedruckt am: 12.04.2025 um 10:04 Uhr
5 Kommentare
Neuester Kommentar
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:
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]
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]
Moin u02060084,
[ungetestete Skizze]
Gruss
Biber
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
Gruss
Biber
@Biber
Die Function würde vielleicht besser "PadOrCut()" heißen - oder auch "Procrustes()" ...
Grüße
bastla
Die Function würde vielleicht besser "PadOrCut()" heißen - oder auch "Procrustes()" ...
Grüße
bastla