Skip to content

Daniels Tagesmeldungen

Kleine IT-Episoden, der Diabetes & das wahre Leben

  • Startseite
  • About me…
    • Lebenslauf
    • Weiterbildung
  • Diabetes melitus
    • Diabetes melitus – Definition/Typen
    • Diabetes melitus – Podcasts
    • Diabetes Typ-2 – Erläuterung
    • Medikament – Forxiga (Dapagliflozin)
    • Medikament – Eylea (Aflibercept)
    • Medikament – Lucentis (Ranibizumab )
    • Medikament – Metformin
  • Disclaimer
  • Toggle search form

WSUS-Update per Batch erzwingen

Posted on 23. Juli 201223. Juli 2012 By Daniel Lensing Keine Kommentare zu WSUS-Update per Batch erzwingen

Leider machen auch ansonsten gut funktionierende Systeme mal Fehler. In diesem Fall wollten sich 9 Updates, die über einen WSUS-Server verteilt werden, nicht installieren. Diese Meldungen hatte sich schon mehrere Tage bemerkbar gemacht, allerdings bin ich erst heute dazu gekommen mich damit zu beschäftigen.

Leider musste passieren, was in solchen Momenten immer passiert laut eines gewissen Herrn Murphey: Der Fehler konnte in dem Moment, wo ich einen entsprechenden Ansprechpartner an der Strippe hatte nicht nachgestellt werden. Also fühlte ich mich in der Beweispflicht, nach dem wir uns auf den kommenden Tag verabredete hatten, den Fehler jederzeit nachstellen zu können.

Dazu nutze ich nun folgendes Skript, welches ich in einer Batch-Datei nutze:

net stop wuauserv
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v LastWaitTimeout /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v DetectionStartTime /f
Reg Delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v NextDetectionTime /f
net start wuauserv
wuauclt /detectnow

Nach einer gewissen Zeit werden mir nun, die immer noch fehlerhaften Updates zur Installation angeboten. Mit diesem Skript wird allerdings generell alle vom WSUS-Server zur Verfügung gestellten Pakete geprüft, so dass es auch bei Installationsroutinen genutzt werden kann.

Windows 7, Windows Vista, Windows XP

Teamviewer-Update gegen potenzielle Sicherheitslücke

Posted on 21. Juli 201221. Juli 2012 By Daniel Lensing Keine Kommentare zu Teamviewer-Update gegen potenzielle Sicherheitslücke

Die Entwickler der Software „Teamviewer“ haben eine potenzielle Sicherheitslücke in Ihrer Software gefunden und behoben. Sie bitten alle Nutzer die aktuellste Version mit höchster Dringlichkeit auf den im Einsatz befindlichen Systemen zu tauschen.

Betroffen sind die Vollversion sowie der Quicksupport in den Versionen:

  • Version 5
  • Version 6
  • Version 7

Die neue Version steht für die folgenden Betriebssysteme zur Verfügung:

  • Windows
  • Mac
  • Linux

Downloadseite des Herstellers

Link zur aktuellen Version 7

Link zu einer der älteren Versionen

Patchday+Updates

Remedy: Berichtsexport direkt in Excel

Posted on 10. Juli 20123. Juli 2015 By Daniel Lensing Keine Kommentare zu Remedy: Berichtsexport direkt in Excel

Nach dem ich ja bereits geschrieben habe, wie man Reports vom aktuellen Tag aus der Applikationm BMC Remedy erstellen kann, möchte ich einen erstellten Bericht direkt in Excel exportieren.

Es gibt daran zwei Vorteile. Man kann an den Daten direkt arbeiten und zweitens Sie können auch ohne Probleme weiterversandt werden.

Dazu muss die Datei „dde.ini“ bearbeitet werden:

[Export in Excel]

Path=C:\Program Files\Microsoft Office\Office14\Excel.exe

Application=excel

Topic=system

Format=Tab

XFRDATA=FILE

Command1=[OPEN(„%f“)]

Der Aufruf ist für ein englisches Office 2010 ausgelegt und entsprechend der vorhandenen Office-Version muss der Pfad angepasst werden.

Wenn man den nun zu exportierenden Bericht mit der rechten Maustaste anklickt, gibt es dort die den Menüpunkt „Export to“. Im entsprechenden Kontextmenü muss dann nur der Punkt „Application“ ausgewählt werden und im Auswahlmenü blendet sich der Punkt „Export in Excel“ ein.

Somit können die ausgewählten Datensätze erfolgreich in Excel übergeben werden.

Software

Alle Domänengruppen inkl. Mitglieder in HTML auflisten

Posted on 25. Juni 201225. Juni 2012 By Daniel Lensing 2 Kommentare zu Alle Domänengruppen inkl. Mitglieder in HTML auflisten

Aufgrund von umfangreicher Benutzerlöschungen habe ich einen Report erstellen wollen, welcher Benutzer in welcher Gruppe als Mitglied zum aktuellen Zeitpunkt eingebunden ist.

Dafür habe ich ein sehr angenehmes VBS-Skript gefunden, welches ich minimal für die Abfrage des Managers erweitert habe. Der Report selber wird als HTML-Datei angelegt.

' DocumentGroups.vbs
' VBScript program to document all groups in Active Directory.
' Outputs group name, type of group, all members, and types of member.
' Lists all groups that are members, but does not list the nested group
' membership.
'----------------------------------------------------------------------
' Copyright (c) 2002 Richard L. Mueller
' Hilltop Lab web site - http://www.rlmueller.net
' Version 1.0 - November 10, 2002
' Version 1.1 - February 19, 2003 - Standardize Hungarian notation.
' Version 1.2 - March 11, 2003 - Remove SearchScope property.
 
' *** MODIFIED March 13, 2006 - Added HTML File Out, Addtional Group/User Properties
'
' This script is designed to be run at a command prompt, using the
' Cscript host. The output can be redirected to a text file.
' For example:
' cscript //nologo DocumentGroups.vbs > groups.txt
'
' You have a royalty-free right to use, modify, reproduce, and
' distribute this script file in any way you find useful, provided that
' you agree that the copyright owner above has no warranty,obligations,
' or liability for such use.
'
' Version 1.3 - June 25, 2012 - Added attribute "managedby" by Daniel Lensing
 
Option Explicit
 
Dim objConnection, objCommand, objRootDSE, strDNSDomain, strQuery
Dim objRecordSet, strDN, objGroup
Dim FileSystem, oFile
' Open Text File for Output
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set oFile = FileSystem.CreateTextFile("GroupMemebrshipNew.html", True)
 
oFile.writeLine "<HTML><HEAD><TITLE>Group Membership for MyDomain.com</TITLE><HEAD><BODY>"
oFile.writeLine "<h4><TABLE width=100% border=0 padding=0 cellspacing=0 valign=top>"
 
 
' Use ADO to search Active Directory.
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
 
' Determine the DNS domain from the RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
 
' Search for all groups, return the Distinguished Name of each.
strQuery = "<LDAP://" & strDNSDomain _
& ">;(objectClass=group);distinguishedName;subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
 
Set objRecordSet = objCommand.Execute
If objRecordSet.EOF Then
Wscript.Echo "No groups found"
objConnection.Close
Set objRootDSE = Nothing
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing
Wscript.Quit
End If
 
' Enumerate all groups, bind to each, and document group members.
Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName")
Set objGroup = GetObject("LDAP://" & strDN)
 
' OUTPUT
oFile.writeLine "<TR>"
oFile.writeLine "<TD width=20% valign=top bgcolor=black><font color=white><strong><u>" & "Group Name:" &_
"</u></strong></font></TD><TD width=80% valign=top><strong>" &_
objGroup.SAMaccountName & "</strong></TD>"
oFile.writeLine "</TR><TR>"
oFile.writeLine "<TD valign=top bgcolor=black><font color=white><strong><u>" & "Distinguished Name:" &_
"</u></strong></font></TD><TD valign=top><strong>" &_
objGroup.distinguishedName & "</strong></TD>"
oFile.writeLine "</TR><TR>"
oFile.writeLine "<TD valign=top bgcolor=black><font color=white><strong><u>" & "Description:" &_
"</u></strong></font></TD><TD valign=top><strong>" &_
objGroup.description & "</strong></TD>"
oFile.writeLine "</TR><TR>"
oFile.writeLine "<TD valign=top bgcolor=black><font color=white><strong><u>" & "Manager:" &_
"</u></strong></font></TD><TD valign=top><strong>" &_
objGroup.managedby & "</strong></TD>"
oFile.writeLine "</TR><TR>"
oFile.writeLine "<TD valign=top bgcolor=black><font color=white><strong><u>" & "Type:" & "</u></strong></font></TD><TD valign=top><strong>" & GetType(objGroup.groupType) & "</strong></TD>"
oFile.writeLine "</TR>"
 
oFile.writeLine "<TR><TD valign=top bgcolor=black><font color=white><strong><u>Members:</font></TD><TD align=left valign=top>"
oFile.writeLine "<TABLE width=70% border=0 cellspacing=0 cellpadding=0>"
oFile.writeLine "<Tr>"
oFile.writeLine " <TD valign=top><strong><u> Name </u></strong></TD>"
oFile.writeLine " <TD valign=top><strong><u> Account </u></strong></TD>"
oFile.writeLine " <TD valign=top><strong><u> Type </u></strong></TD>"
oFile.writeLine "</Tr>"
Call GetMembers(objGroup)
oFile.writeLine "</TABLE>"
 
oFile.writeLine "</TD></TR>"
 
oFile.writeLine "<TR><TD COLSPAN=2><hr width=90%></TD></TR>"
 
 
objRecordSet.MoveNext
 
Loop
oFile.writeLine "</TABLE></BODY></HTML>"
 
msgBox "Done !!!"
 
' Clean up.
objConnection.Close
Set objRootDSE = Nothing
Set objGroup = Nothing
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing
 
Function GetType(intType)
' Function to determine group type from the GroupType attribute.
If (intType And &h01) <> 0 Then
GetType = "Built-in"
ElseIf (intType And &h02) <> 0 Then
GetType = "Global"
ElseIf (intType And &h04) <> 0 Then
GetType = "Local"
ElseIf (intType And &h08) <> 0 Then
GetType = "Universal"
End If
If (intType And &h80000000) <> 0 Then
GetType = GetType & "/Security"
Else
GetType = GetType & "/Distribution"
End If
End Function
 
Sub GetMembers(objADObject)
' Subroutine to document group membership.
' Members can be users or groups.
Dim objMember, strType
For Each objMember In objADObject.Members
If UCase(Left(objMember.objectCategory, 8)) = "CN=GROUP" Then
strType = "Group"
Else
strType = "User"
End If
 
' OUTPUT
 
oFile.writeLine "<TR>"
oFile.writeLine "<TD valign=top>" & objMember.displayName & _
"</TD><TD valign=top>" & objMember.SAMaccountName & _
"</TD><TD valign=top>" & strType & "</TD>"
oFile.writeLine "</TR>"
' Wscript.Echo " Member: " & objMember.sAMAccountName & " (" & strType & ")"
Next
Set objMember = Nothing
End Sub
VBS

Skript: Server-Erstkonfiguration per Powershell

Posted on 20. Juni 201220. Juni 2012 By Daniel Lensing Keine Kommentare zu Skript: Server-Erstkonfiguration per Powershell

Häufig muss ich für Testumgebungen Windows Server 2008 R2 installieren. Dieses kann in Testumgebungen oder auch in Produktiv-Umgebungen vorkommen. Regelmäßig muss man dann die selben Einstellungen vornehmen. Dafür habe ich mir ein Powershell-Skript erstellt, welches folgende Konfiguration herstellt:

    • Installation des SNMP-Service
    • Installation des Telnet-Clients
    • Installation des .NET Framework 3.5.1
    • Installation von Bitlocker
    • Gesammte Firewall deaktivieren
    • Verstärkte Sicherheitskonfiguration füe IE für alle Benutzer deaktivieren
    • Start des „Assistent für die Erstkonfiguration“ deaktivieren
    • Start des „Server-Manager“ deaktivieren
    • Remote Desktop aktivieren

Um dieses Ausführen zu können muss erst die Berechtigung für Skripts angepasst werden. Dafür wird die Powershell geöffnet und der folgende Befehl eingeegben:

Set-ExecutionPolicy unrestricted

Anschließend kann das folgende Skript gestartet werden. Dafür muss es in eine Datei kopiert und mit der Datei-Endung „ps1“ versehen werden.

# Vorbereitung zur Feature-Installation
Import-Module Servermanager 
 
# SNMP installieren
Add-WindowsFeature SNMP-Services
Set-Service SNMP -StartupType Automatic
Start-Service SNMP
 
#Telnet-Client installieren
Add-WindowsFeature Telnet-Client
 
#.NET Framework 3.5.1 installieren
Add-WindowsFeature AS-NET-Framework
 
#Bitlocker installieren
Add-WindowsFeature Bitlocker
 
# Firewall deaktivieren
netsh advfirewall set allprofiles state off
 
# Registry für Routing-Anpassung
Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "IPEnableRouter" -value "0"
 
# Registry für IE ESC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}" -Name "IsInstalled" -Value "0"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}" -Name "IsInstalled" -Value "0"
 
# Registry für Assistent für Erstkonfiguration
Set-ItemProperty -Path "HKLM:\Software\Microsoft\ServerManager\Oobe" -Name "DoNotOpenInitialConfigurationTasksAtLogon" -Value "1"
 
# Registry für Server-Manager
Set-ItemProperty -Path "HKLM:\Software\Microsoft\ServerManager\" -Name "DoNotOpenServerManagerAtLogon" -Value "1"
 
# RemoteDesktop
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value "0"
 
# Restart des Computers
Restart-Computer
Powershell

VBA: LastLogonTimeStamp in Excel-Tabelle

Posted on 18. Juni 201218. Juni 2012 By Daniel Lensing 2 Kommentare zu VBA: LastLogonTimeStamp in Excel-Tabelle

Um eine Auswertung der letzten Anmeldung von Benutzern zu erstellen habe ich das folgende Skript genutzt.

Es können mehrere Anpassungen durchgeführt werden:

– Domäne => dc=domain,dc=local
– Ausschließen von deaktivierten Konten => (!userAccountControl:1.2.840.113556.1.4.803:=2)
– Anpassung der Zeit auf alle Anmeldungen älter 90 Tage => Format(Now() - 90

Das Skript muss einfach nur aus Excel gestartet werden und man erhält eine sehr übersichtliche Liste. Es ist allerdings zu beachten, dass der Wert "LastLogonTimeStamp" ein sychnronisierter Wert ist und nicht unbedingt tagesaktuell.

Option Explicit
Const ADS_UF_ACCOUNTDISABLE = 2
Const ADS_SCOPE_SUBTREE = 2
Const ADS_UF_DONT_EXPIRE_PASSWD = 65536
Const FLD_FULLNAME = 1
Const FLD_SAM_ACCTNAME = 2
Const FLD_CREATEDATE = 3
Const FLD_PWD_LASTCHNG = 4
Const FLD_PWD_DONTEXPIRE = 5
Const FLD_UAC = 6
Const FLD_LASTLOGON = 7
Const FLD_ADSPATH = 8
Const FLD_MAX = 8
Const HEADROW = 1
Const ASCII_OFFSET = 64
Sub AD_QUERY()
Dim objUser, objLogon, objConnection, objCommand, objRecordSet
Dim strPath, strFullName, strSamAccountName
Dim intUAC, intLogonTime
Dim createdate, pwdchanged
Dim Disabled, PWDexpire, intCounter
Dim objsheet As Excel.Worksheet
Dim rngData As Excel.Range
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Properties("ADSI Flag") = 1
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 10000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
'Search AD Global catalog for user objects that are not disabled
objCommand.CommandText = "<GC://dc=domain,dc=local>; (&(objectClass=user)(objectCategory=person));adspath, samAccountName; subtree"
Application.StatusBar = "Executing AD Query. Please wait..."
Set objRecordSet = objCommand.Execute
Application.StatusBar = "Populating Worksheet with data. Please wait..."
Set objsheet = Application.ActiveWorkbook.Worksheets.Add()
objsheet.Name = Format(Date, "dd-mm-yyyy") & " Raw Data"
intCounter = 2 'Initialise worksheet row counter
objsheet.Cells(HEADROW, FLD_FULLNAME).Value = "Full Name"
objsheet.Cells(HEADROW, FLD_SAM_ACCTNAME).Value = "SAM Account name"
objsheet.Cells(HEADROW, FLD_CREATEDATE).Value = "Create Date (UTC)"
objsheet.Cells(HEADROW, FLD_PWD_LASTCHNG).Value = "PWD Last Changed"
objsheet.Cells(HEADROW, FLD_PWD_DONTEXPIRE).Value = "PWD Don't Expire"
objsheet.Cells(HEADROW, FLD_UAC).Value = "UAC"
objsheet.Cells(HEADROW, FLD_LASTLOGON).Value = "LastLogonTimestamp"
objsheet.Cells(HEADROW, FLD_ADSPATH).Value = "ADSPATH"
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
  strPath = objRecordSet.Fields("adspath")
'Change the global catalog path to an ldap path so that we can access
'all the attributes when binding to the object.
  strPath = Replace(strPath, "GC://", "LDAP://")
  Set objUser = GetObject(strPath)
  intUAC = objUser.userAccountControl
  If (intUAC And ADS_UF_DONT_EXPIRE_PASSWD) = 0 Then
    PWDexpire = False
  Else
    PWDexpire = True
  End If
  On Error Resume Next
  Err.Clear
  'Set objLogon = objUser.LastLogonTimestamp
  Set objLogon = objUser.LastLogon
  If Err.Number <> 0 Then
    intLogonTime = 0
    Err.Clear
  Else
    intLogonTime = objLogon.HighPart * (2 ^ 32) + objLogon.LowPart
    intLogonTime = intLogonTime / (60 * 10000000)
    intLogonTime = intLogonTime / 1440
  End If
  strFullName = objUser.FullName
  If Err.Number <> 0 Then
    strFullName = ""
    Err.Clear
  End If
  createdate = objUser.whenCreated
  If Err.Number <> 0 Then
    createdate = ""
    Err.Clear
  End If
  pwdchanged = objUser.passwordLastChanged
  If Err.Number <> 0 Then
    pwdchanged = ""
    Err.Clear
  End If
  On Error GoTo 0
  strSamAccountName = objUser.SamAccountName
  objsheet.Cells(intCounter, FLD_FULLNAME).Value = strFullName
  objsheet.Cells(intCounter, FLD_SAM_ACCTNAME).Value = strSamAccountName
  objsheet.Cells(intCounter, FLD_CREATEDATE).Value = createdate
  objsheet.Cells(intCounter, FLD_PWD_LASTCHNG).Value = pwdchanged
  objsheet.Cells(intCounter, FLD_PWD_DONTEXPIRE).Value = PWDexpire
  objsheet.Cells(intCounter, FLD_UAC).Value = intUAC
  If intLogonTime <> 0 Then
    objsheet.Cells(intCounter, FLD_LASTLOGON).Value = intLogonTime + #1/1/1601#
  Else
    objsheet.Cells(intCounter, FLD_LASTLOGON).Value = "#1/1/1601#"
  End If
  objsheet.Cells(intCounter, FLD_ADSPATH).Value = strPath
  objRecordSet.MoveNext
  intCounter = intCounter + 1
Loop
Set rngData = objsheet.Range("A1:" & Chr(ASCII_OFFSET + FLD_MAX) & intCounter - 1)
'if the named range already exists we need to delete is before we create it again.
'This will allow more than one audit set to be retained in the same workbook.
On Error Resume Next
ActiveWorkbook.Names("AD_DATA_SET").Delete
On Error GoTo 0
rngData.Name = "AD_DATA_SET"
rngData.Columns.AutoFit
Application.StatusBar = "Ready"
End Sub
 
Sub filter_lastlogon()
Dim rngData As Excel.Range
Set rngData = Range("AD_DATA_SET")
rngData.Worksheet.AutoFilterMode = False
'Filter function seems to ignore locale info so dates must be in US format
rngData.AutoFilter Field:=FLD_LASTLOGON, Criteria1:="=#1/1/1601#", Operator:=xlOr, _
  Criteria2:="<" & Format(Now() - 90, "mm/dd/yyyy")
End Sub
 
Sub filter_pwd_dontexpire()
Dim rngData As Excel.Range
Set rngData = Range("AD_DATA_SET")
rngData.Worksheet.AutoFilterMode = False
rngData.AutoFilter Field:=FLD_PWD_DONTEXPIRE, Criteria1:="=True"
End Sub
 
Sub RemoveFilter()
Dim rngData As Excel.Range
Set rngData = Range("AD_DATA_SET")
rngData.Worksheet.AutoFilterMode = False
End Sub
 
Sub CopyPW()
'Copies the filtered data to a new Worksheet
'Code modified from http://www.contextures.com/xlautofilter03.html#Copy
'Viewed 7/6/2007
Dim rngData As Excel.Range
Dim rng As Range
Dim rng2 As Range
Dim objsheet As Worksheet
Set rngData = Range("AD_DATA_SET")
Call filter_pwd_dontexpire
If Not rngData.Worksheet.FilterMode Then
  MsgBox "Filter Data before selecting this option", vbExclamation
  Exit Sub
End If
With rngData.Worksheet.AutoFilter.Range
  On Error Resume Next
  Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
    .SpecialCells(xlCellTypeVisible)
  On Error GoTo 0
End With
If rng2 Is Nothing Then
    MsgBox "No data to copy"
Else
  Set objsheet = Application.ActiveWorkbook.Worksheets.Add()
  objsheet.Name = Format(Date, "dd-mm-yyyy") & " Password dont expire"
  Set rng = rngData.Worksheet.AutoFilter.Range
  rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
    Destination:=objsheet.Range("A2")
  objsheet.Cells(HEADROW, FLD_FULLNAME).Value = "Full Name"
  objsheet.Cells(HEADROW, FLD_SAM_ACCTNAME).Value = "SAM Account name"
  objsheet.Cells(HEADROW, FLD_CREATEDATE).Value = "Create Date (UTC)"
  objsheet.Cells(HEADROW, FLD_PWD_LASTCHNG).Value = "PWD Last Changed"
  objsheet.Cells(HEADROW, FLD_PWD_DONTEXPIRE).Value = "PWD Don't Expire"
  objsheet.Cells(HEADROW, FLD_UAC).Value = "UAC"
  objsheet.Cells(HEADROW, FLD_LASTLOGON).Value = "LastLogonTimestamp"
  objsheet.Cells(HEADROW, FLD_ADSPATH).Value = "ADSPATH"
  objsheet.Columns.AutoFit
End If
End Sub
 
Sub CopyLstLogon()
'Copies the filtered data to a new Worksheet
'Code modified from http://www.contextures.com/xlautofilter03.html#Copy
'Viewed 7/6/2007
Dim rngData As Excel.Range
Dim rng As Range
Dim rng2 As Range
Dim objsheet As Worksheet
Set rngData = Range("AD_DATA_SET")
Call filter_lastlogon
If Not rngData.Worksheet.FilterMode Then
  MsgBox "Filter Data before selecting this option", vbExclamation
  Exit Sub
End If
With rngData.Worksheet.AutoFilter.Range
  On Error Resume Next
  Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
    .SpecialCells(xlCellTypeVisible)
  On Error GoTo 0
End With
If rng2 Is Nothing Then
  MsgBox "No data to copy"
Else
  Set objsheet = Application.ActiveWorkbook.Worksheets.Add()
  objsheet.Name = Format(Date, "dd-mm-yyyy") & " LastLogon > 90 days"
  Set rng = rngData.Worksheet.AutoFilter.Range
  rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
    Destination:=objsheet.Range("A2")
  objsheet.Cells(HEADROW, FLD_FULLNAME).Value = "Full Name"
  objsheet.Cells(HEADROW, FLD_SAM_ACCTNAME).Value = "SAM Account name"
  objsheet.Cells(HEADROW, FLD_CREATEDATE).Value = "Create Date (UTC)"
  objsheet.Cells(HEADROW, FLD_PWD_LASTCHNG).Value = "PWD Last Changed"
  objsheet.Cells(HEADROW, FLD_PWD_DONTEXPIRE).Value = "PWD Don't Expire"
  objsheet.Cells(HEADROW, FLD_UAC).Value = "UAC"
  objsheet.Cells(HEADROW, FLD_LASTLOGON).Value = "LastLogonTimestamp"
  objsheet.Cells(HEADROW, FLD_ADSPATH).Value = "ADSPATH"
  objsheet.Columns.AutoFit
End If
End Sub

Als Gundlage wurde das Skript von der folgenden Seite eingesetzt:
Link

VBA

Remedy: Datumsabfrage für den laufenden Tag

Posted on 14. Juni 201220. Juni 2012 By Daniel Lensing Keine Kommentare zu Remedy: Datumsabfrage für den laufenden Tag

Einige meiner Kunden nutzen unter anderem als Ticketsystem Remedy. Entsprechend müssen auch Abfragen und Berichte erstellt werden.

Man kann bei Remedy über die $-Zeichen in Makros Eingabeaufforderungen erstellen, so dass Makros individuell abgefragt werden können. In dem von mit bearbeiteten Fall musste eine Tagesgenaue Auswertung zwischen einem definierten Zeitraum erstellt werden. somit baute ich die folgende Abfrage ins ein Makro:

(‚FELD‘ > „$Von-Datum im Format 01.01.2012$“ AND ‚FELD‘ < „$Bis-Datum im Format 01.01.2012$“)

Wenn nun als „Bis-Datum“ das heutige  Tag eingegeben wurde, erschienen allerdings nicht die Daten des aktuellen Tages. In der Abfrage wird durch den Eintrag des Datums folgender Zeitstempel als gegeben angenommen:

01.01.2012 00:00:00

Somit konnte auch keine Daten ermittelt werden, da diese gar nicht gesucht wurden. Um jetzt allerdings nicht auch noch eine genauere Eingabe mit Uhrzeit durchführen zu müssen, habe ich die Abfrage nur ein wenig erweitert:

(‚FELD‘ > „$Von-Datum im Format 01.01.2012$“ AND ‚FELD‘ < („$Bis-Datum im Format 01.01.2012$“ + (24*60*60)))

Entsprechend werden zu einem aktuellen Tag ein weiterer Tag hinzugerechnet. Das bedeutet das bei der Eingabe des „01.01.2012“ der Zeitstempel auf „02.01.2012 00:00:00“ genutzt wird. Damit werden auch alles Daten des 01.01.2012 ermittelt und zur Verfügung gestellt.

Software

Seitennummerierung der Beiträge

Vorherige 1 … 74 75 76 … 152 Nächste

Daniel Lensing

Ich betreibe diesen Blog, bei dem ich meine Erfahrungen aus der IT & dem Berufsalltag sowie dem Wahnsinn des Lebens mit Höhen und Tiefen. Darunter meine „Erlebnisreise“ zum Planeten „Diabetes mellitus Typ-2“.

Translate:

Follow us

Kategorien

  • Allgemein (1)
  • Client (233)
    • Android (7)
    • Fedora (Linux) (5)
    • iOS (5)
    • Mac OS X (5)
    • Peripherie (5)
    • Ubuntu (Linux) (8)
    • Windows 10 (58)
    • Windows 11 (19)
    • Windows 7 (100)
    • Windows 8 (36)
    • Windows 8.1 (28)
    • Windows Mobile (2)
    • Windows Vista (65)
    • Windows XP (21)
  • Cloud (15)
    • Amazon AWS (1)
    • Microsoft Azure (7)
    • Office 365 (9)
  • Fortbewegung (56)
    • Auto (18)
    • Bahn (18)
    • Beinarbeit (5)
    • Flugzeug (4)
    • Zweirad (14)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (198)
    • #t2dhero (49)
    • Arbeitszimmer (28)
    • Audio (20)
    • Film / Kino (7)
    • Gedanken (78)
    • Gesundheit (31)
    • Internet (5)
    • Lebensmittel & Essen (22)
    • Lesestoff (18)
    • Sport (10)
    • Veranstaltung (3)
  • Lehren & Lernen (48)
    • Forschung (1)
    • Konferenzen (3)
    • Präsentation (3)
    • Zertifizierung (42)
  • Programme (321)
    • Android-Apps (27)
    • Eigene Tools (11)
    • iOS-Apps (6)
    • Office (85)
    • Patchday+Updates (73)
    • Software (148)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (90)
    • AutoIT (1)
    • KiXtart (1)
    • PHP (3)
    • Power Automate (1)
    • Powershell (59)
    • VB.NET (8)
    • VBA (10)
    • VBS (10)
  • Server (159)
    • Citrix XenServer (2)
    • Exchange Server (26)
    • Lync Server (1)
    • System Center (4)
    • Ubuntu Server (2)
    • Windows Home Server (2)
    • Windows Server (92)
    • Windows Server 2012 (45)
    • Windows Server 2016 (15)
    • Windows Server 2019 (18)
    • Windows Server 2022 (15)
    • Windows Server 2025 (8)
  • Telekommunikation (38)
    • Festnetz (3)
    • Internet (13)
    • Mobilfunk (23)
  • Verkauf & Verlosung (1)
  • Web-Installationen (36)
    • Joomla (4)
    • Mastodon (1)
    • MediaWiki (9)
    • phpMyAdmin (2)
    • Piwik (4)
    • Wordpress (20)
Mastodon

Copyright © 2025 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme