Skip to content

Jörg Dähler

IT-Nonstop Blog

Archiv

Tag: Scripting

Wer wissen will wann sein System installiert wurde, kann das jetzt bequem mit diesem Script abfragen.

VBScript


' Region Description
'
' Name       : SystemInstallDate.vbs
' Author     : Joerg Daehler
' Version    : 1.0
' Web        : www.it-nonstop.de
' Description: Shows System Install Date
'
' EndRegion

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objItem In colItems
  cInstdate = CStr(objItem.InstallDate)
  WScript.Echo "Instdate: " & Mid(cInstDate, 7, 2) & _ 
        "." & Mid(cInstDate, 5, 2) & "." &  Mid(cInstDate, 1, 4) & " (" & _
  objItem.InstallDate & ")"
Next

Manchmal ist es wichtig, von allen lokalen Benutzern die SID zu kennen. Mit diesem Script kann man eine entsprechende Liste von System abfragen.

VBScript


' Region Description
'
' Name       : ShowAllUserSIDs.vbs
' Author     : Joerg Daehler
' Version    : 1.1
' Web        : www.it-nonstop.de
' Description: Shows User SID
'              HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
'
' EndRegion

On Error Resume Next

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys
 
a = "Shows all user SIDs" & vbLf
a = a & "(SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList)" & vbLf & String(60, "=") & vbLf

For Each objSubkey In arrSubkeys
    strValueName = "ProfileImagePath"
    strSubPath = strKeyPath & "\" & objSubkey
    objRegistry.GetExpandedStringValue HKEY_LOCAL_MACHINE,strSubPath,strValueName,strValue
 
 p = InStrRev(strValue, "\")
 strValue2 = Right(strValue, Len(strValue) - p)
 
 a = a & vbLf & strValue2 & " = " & objSubkey & " (" & strValue & ")"
Next

a = a & vbLf & vbLf & String(60, "=")
a = a & vbLf & "(c) 2009 by JD"

WScript.Echo a

Batch SUCHPATH.BAT

Spätestens nach dem ersten Upgrade älterer Software auf neue Versionen oder nach dem Einspielen mehrerer Patches stellt man sich oft die Frage, ob nun auch wirklich das richtige Programm aufgerufen wird. Häufig verbergen sich noch vergessene Utilities in Verzeichnissen, auf die ein Suchpfad zeigt, und verhindern so die Ausführung des eigentlich gewünschten Programms.

Dieses Problem bin ich mit Hilfe einer kleinen Stapeldatei zu Leibe gerückt. Das Batchfile durchsucht den Pfad nach einem vom Benutzer angegebenen Dateinamen und zeigt alle gefundenen Files an. Das dazu eizugebende Listing ist vergleichsweise kurz:

@echo off
REM *********************************
REM ***   SUCHPATH Version 1.0    ***
REM *** (c) 1999 by Joerg Daehler ***
REM *********************************

if %1x==x goto help
if %1==__$$__$$__$$ goto INNERLOOP
%0 __$$__$$__$$ %1 %PATH%

:HELP
  echo SUCHPATH.BAT Version 1.0 (c) 1999 by Joerg Daehler
  echo Sucht den Pfad nach einer Datei ab !
  echo USAGE: SUCHPATH Dateiname ( *,? erlaubt )
  echo.
  goto quit

:INNERLOOP
  set test=%2
  if exist %TEST% dir %TEST%
:next
  if %3x==x goto quit
  if exist %3\%TEST% dir %3\%TEST%
  shift
  goto next

:quit

Für Testzwecke benötigt man manchmal Dateien mit einer speziellen Größe. Zum Beispiel wenn das kopieren von sehr großen Dateien auf einen Server getestet werden soll.

Mit dem Windows Boardmittel “fsutil” können sie diese Dateien erstellen:

Beispiel1:

fsutil file createnew c:\temp\testfile.txt 1048576
erzeugt eine Testdatei mit einer Größe von 1MB.

Beispiel2:

fsutil file createnew c:\temp\testfile.txt 1073741824
erzeugt eine Testdatei mit einer Größe von 1GB. 

Here is a short example how to generate a TicketID in Microsoft System Center Operations Manager 2007.

  • Open “Microsoft SQL Server Management Studio
  • Search and expand the OperationsManager Database
  • Expand Tables-dbo.Alert and select Triggers
  • Right click on Triggers and select “New Trigger…
  • Paste the following lines in the SQLquery window:
-- ====================================================================
-- File  : CreateTicketIdTrigger.SQL
-- Author  : Joerg Daehler
-- Create date  : 2008-09-09
-- Environment  : Microsoft System Center Operations Manager 2007SP1
-- Description  : Trigger for Table "Alert". Generates an increment
-- TicketID for new Alerts
-- =====================================================================

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[Trigger_TicketId]
ON [dbo].[Alert]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @MY_ID int;
DECLARE @ALERTID uniqueidentifier;
DECLARE @TID nvarchar(150);

SELECT @ALERTID = inserted.AlertId From inserted;
IF @ALERTID IS NOT NULL
BEGIN
SELECT TOP 1 @TID = TicketId FROM Alert ORDER BY CAST(TicketId as int) DESC;
SET @MY_ID = CAST(@TID as int);

IF @TID IS NOT NULL
BEGIN
SET @MY_ID = @MY_ID + 1;
END ELSE
BEGIN
SET @MY_ID = 1;
END

SET @TID = CAST(@MY_ID as nvarchar(150));

UPDATE Alert SET TicketId = @TID WHERE AlertId = @ALERTID;

END
END
  • Execute this Script!