VBS Convert HTML Tables

Visual Basic script to convert HTML to CSV or TEXT using the Excel.Application object.

'****************************************************************************************
'bestandsnaam: ConvertTable2X.vbs
'geschreven_door: Tim van Kooten Niekerk
'versie: 17:38 15-4-2010
'Converteer html tabellen naar CSV of TEXT m.b.v. het Excel object
'****************************************************************************************

' Global variable and const declarations
option explicit
'on error resume next
dim oEXC, oArg
const xlCSV=6
const xlTXT=21

' Global objectdeclarations
set oArg = WScript.Arguments 
set oEXC = CreateObject("Excel.Application")

' Functie inlezen argumenten van de commandline (0-?)
function fReadArgument(vArgNumber)
  On Error Resume Next
  fReadArgument = oArg(vArgNumber)
end function

' Convert2X function...
function fTable2X(sHTMLFile, sCSVFile, sFileType)
  if (sHTMLFile ‹› "") and (sCSVFile ‹› "") then
    dim oWB
    set oWB =  oEXC.Workbooks.Open (sHTMLFile)
    'oEXC.Visible = True
    oEXC.Application.DisplayAlerts = False
    oEXC.ActiveWorkbook.SaveAs sCSVFile,  sFileType
    oEXC.ActiveWorkbook.Close False 
    oEXC.Application.DisplayAlerts = True

    ' Opschonen
    Set oWB =  Nothing
  end if
end function

' Start programma...
if fReadArgument("0") ‹› "" and fReadArgument("1") ‹› ""  and fReadArgument("2") ‹› "" then
  fTable2X fReadArgument("0"), fReadArgument("1"), fReadArgument("2")
else
  MsgBox ("Een of meerdere argumenten ontbreken..." & vbCrLf & vbCrLf & "Gebruik: convertTable2X   " & vbCrLf & "(filetypenum: 6=CSV, 21=TXT)")
end if

' Opschonen
set oArg = Nothing
set oEXC = Nothing

 

Powershell Fail-Back script

Simple script using the cluster command to return a cluster group to a prefered node.

# ********************************************************************
# Scriptnaam: AUTOFAILBACK.PS1
# Geschreven_door: Tim van Kooten Niekerk
# Versie: 20100412
# Info: Failback to preferred node (TST en ACC omgeving) 
# ********************************************************************

# Constanten en andere string waarden...
[string]$sClusterGroupCmd = "cluster group"
[string]$sOutputLOGFile = "AutoFailBack.log"
[string]$sDateTime = Get-Date -f o
$sDateTime + ";START;>>> Start controle en AutoFail-Back procedure..." | Out-File -Filepath $sOutputLOGFile

function fAutoFailBack([string]$sClusterGroup1, [string]$sPreferredNodeCG1) {
  [string]$sDateTime = Get-Date -f o
  [string]$sClusterGroup1Clean = $sClusterGroup1.Replace("", "")
  $vResult1 = Invoke-Expression $sClusterGroupCmd
  $vResult2 = $vResult1 | select-string -Pattern $sClusterGroup1 | select-string -Pattern "Online" | select-string -Pattern $($sPreferredNodeCG1)
  if ($vResult2.LineNumber -gt 0) {
    $vResultFIN = $sDateTime + ";OK;" + $vResult2.Line
	
  } else {
    [string]$sClusterGroupCmdFO =  $sClusterGroupCmd  + " `"" + $($sClusterGroup1Clean) +  "`" `/moveto:" + $($sPreferredNodeCG1)
    $vResultB1 = Invoke-Expression $sClusterGroupCmdFO
    $vResultB2 = $vResultB1 | select-string -Pattern $sClusterGroup1 | select-string -Pattern "Online" | select-string -Pattern $($sPreferredNodeCG1)
    if ($vResultB2.LineNumber -gt 0) { 
      $vResultFIN = $sDateTime + ";FO-OK;" + $vResultB2.Line
    } else {
      $vResultC1 = Invoke-Expression $sClusterGroupCmd
      $vResultC2 = $vResultC1 | select-string -Pattern $sClusterGroup1
      $vResultFIN = $sDateTime + ";FO-FAIL;" + $vResultC2.Line
    }

  }
  # Schrijf resultaat weg naar Logbestand
  $vResultFIN | Out-File -Filepath $sOutputLOGFile -Append
}

fAutoFailBack "CLUSTERGROUPNAME" "NODENAME"
fAutoFailBack "CLUSTERGROUPNAME2" "NODENAME"

 

MSSQL Log space used percentage

Met onderstaande T-SQL kun je de vulling in procent van het transaction log bestand van een specifieke database opvragen en monitoren. Dit is alleen handig in specifieke situaties. Bij een correct database onderhoudsplan zal dit niet nodig zijn.

CREATE TABLE #tTLSpace 
( 
DBName sysname, 
TLSize decimal(18,5), 
TLUsed decimal(18,5), 
status INT 
)
GO

INSERT INTO #tTLSpace 
       exec ('DBCC SQLPERF(logspace)') 
GO

DECLARE @dTLUsed decimal
SELECT @dTLUsed = TLUsed from #tTLSpace WHERE DBName = 'DATABASE'
IF ( @dTLUsed > 90)
BEGIN
  PRINT @dTLUsed
  PRINT 'TransactionLog bestand 90 procent vol...'
END
GO

DROP TABLE #tTLSpace 
GO

MSSQL check database-backup

Script to check for databases not backupped in the last two days

SELECT sys.databases.name
FROM sys.databases
WHERE sys.databases.name not in
(SELECT DISTINCT sys.databases.name from sys.databases 
INNER JOIN msdb..backupset ON sys.databases.name = msdb..backupset.database_name
WHERE (msdb..backupset.type = 'D' AND backup_start_date > (GetDate() -2)))
AND sys.databases.state = 0 AND sys.databases.name ‹› 'tempdb'

 

GNU/Linux basic VI commands

Text edit

a[text toevoegen na] i[text toevoegen voor] o[text onder toevoegen] O[text boven toevoegen] R[text overschrijven]

Text delete

d[getal+richting verwijderen] d$[verwijder text tot einde regel] dd[verwijder hele regel] x[verwijder huidig character] X[verwijder vorig character] J[koppel de huidige en de volgende regel aan elkaar]

Copy / Paste

y[getal+richting naar buffer kopieren] yw[woord naar buffer kopieren] p[plaats buffer na] P[plaats buffer voor]

Other

u[ongedaan maken] ~[hoofdletters/kleine letters]

File management

:wq[bestand opslaan en afsluiten :w[bestand opslaan] :q[afsluiten] :q![geforceerd afsluiten zonder opslaan]

 

PowerShell PingProbe script

Onderstaand een een eenvoudig PowerShell script om m.b.v. het PING commandp te controleren of een host nog online. De resultaten worden samen met een datumcode weggeschreven naar een logbestand.

# ********************************************************************
# Scriptnaam: PINGPROBE.PS1
# Geschreven_door: Tim van Kooten Niekerk
# Versie: 200910211650
# Info: Script stuurt een ping naar een gespecificeerd IP-adress en
# Info: schrijft resultaat weg in een gespecificeerd LOG-bestand.
# ********************************************************************

# Constanten en andere string waarden...
[string]$sIPAddress1 = "[IP-ADRESS-OR-HOSTNAME]"
[string]$vOutputTXTFile = "C:PingLog.txt"
[string]$sCommandLine1 = "ping " + $sIPAddress1 + " -n 1 | select-string -Pattern `"Reply`""
[string]$sDateTime = Get-Date -f o

$vResult1 = Invoke-Expression $sCommandLine1
if ($vResult1.LineNumber -gt 0) {
[bool]$bIsPingable = $True
[string]$sComment1 = $vResult1.line
} else {
[bool]$bIsPingable = $False
[string]$sComment1 = "No Reply..."
}

# Stel samen en voer resultaat uit naar bestand...
$sDateTime + ";" + $bIsPingable + ";" + $sComment1 | Out-File -Append -Filepath $vOutputTXTFile

PowerShell batch nslookup

Article is written in the Dutch language… 

Onderstaande PowerShell script zoekt ip-adressen bij hostnamen uit een CSV-bestand en schrijft deze waarden weg in een text-bestand. De eerste regel van het CSV-bestand moet de kolomnamen bevatten. Het script kijkt naar de kolom met de naam “Hostname”.

# *****************************************************************************
# Scriptnaam: NSLOOKUP2.PS1
# Geschreven_door: Tim van Kooten Niekerk
# Versie: 2009.10.16.01
# Info: Dit script zoekt IP-adressen bij hostnamen vanuit een CSV-bestand.
# Info: De resultaten worden uitgevoerd naar bestand: "IPadressen.txt".
# Info: De 1e regel van het CSV-bestand moet kolomnamen bevatten. 
# INfo: Het script kijkt alleen naar de kolom "Hostname".
# *****************************************************************************

$vDNSServerIP = "[server-ip-address]"
$vImportCSVFile = "HostNames.csv"
$vOutputTXTFile = "IPadressen.txt"

$aImportCSV1 = import-csv $vImportCSVFile
foreach ($vRow in $aImportCSV1 ) { 
  $vNSLookup = nslookup $($vRow.Hostname) $($vDNSServerIP) | `
               select-string -NotMatch -Pattern $($VDNSServerIP)
  $VNSLookupIP = $vNSLookup | select-string -Pattern "Address"
  $VNSLookupName = $vNSLookup | select-string -Pattern "Name"

  # Stel een regel samen t.b.v. uitvoer bestand...
  "Question:   " + $vRow.HostName + "	" + `
  $vNSLookupName.Line + "	" + `
  $vNSLookupIP.Line | `
  Out-File -Append -Filepath $vOutputTXTFile
}

 

VBS Cleanup Sessionfiles

Article is written in the Dutch language…

Het onderstaande script heb ik geschreven om bestanden in een bepaalde directory verwijderen als ze ouder zijn dan een opgegeven aantal dagen. Het script is ontworpen ‘silent’ te draaien m.b.v. bijvoorbeeld de windows taskscheduler-service. Het resultaat van de actie en eventuele foutmeldingen worden in de windows eventlog geregistreerd.

*** Het gebruik van dit scripts en code van deze site is op eigen risico. Test scripts en code grondig voor ingebruikname en zorg ervoor dat je begrijpt wat er wordt uitgevoerd! | Use published scripts and code at your own risk and test thoroughly before usage. Make sure you understand te code! ***

'*********************************************************************
'bestandsnaam: SESSCLEAN.VBS
'geschreven_door: Tim van Kooten Niekerk
'versie: 11:39 22-2-2010
'info: CleanUp (session) bestanden ouder dan x dagen.
'info: Use at your own risk and test thoroughly before usage.
'*********************************************************************

'Procedure Settings (Settings en Declaraties)
  option explicit
  dim oFSO, oWSH, vEventLogHeader, vEventLogFooter
  set oFSO = CreateObject("Scripting.FileSystemObject")
  Set oWSH = WScript.CreateObject("Wscript.Shell")
  vEventLogHeader = "SESSCLEAN.VBS" & vbCrLf
  vEventLogFooter = vbCrLf & vbCrLf & "Info: Bestanden ouder dan een opgegeven aantal " & _
                    "dagen worden bij het starten van dit script verwijderd uit de " & _
                    "opgegeven directory."

'Functie fCleanUPDIR (Clean Up Session Dir)
function fCleanUPDir(vCleanUPDir,vDaysOld)
  if oFSO.FolderExists(vCleanUPDir) then
    if vDaysOld > 0 and vDaysOld < 100 then
      dim vFolder1, vBestandsNaam, f1, vBestandsDate, vFilesDeleted
      vFilesDeleted = 0
      set vFolder1 = oFSO.GetFolder(vCleanUPDir)
      set vFolder1 = vFolder1.Files
      for each f1 in vFolder1
        vBestandsNaam = f1.name
        vBestandsDate = f1.datelastmodified
        if IsDate(vBestandsDate) then
          vBestandsDate = CDate(vBestandsDate)
          if (now - vBestandsDate) > vDaysOld then
            oFSO.DeleteFile(vCleanUPDir & "" & vBestandsNaam)
            vFilesDeleted = vFilesDeleted + 1
          end if
        end if
      next
      'Schrijf de uitkomst en ingestelde waarden naar de eventlog als mededeling.
      oWSH.LogEvent 0, vEventLogHeader & _
                      vFilesDeleted & " bestand(en) van ouder dan " & vDaysOld & _
                      " dag(en) verwijderd uit " & vCleanUPDir & vEventLogFooter
      else
        'Schrijf foutmelding naar de eventlog als waarschuwing
        oWH.LogEvent 2, vEventLogHeader & _
                       "Opgegeven waarde (" & vDaysOld & " dag(en)) bevindt zich " & _
                       "buiten de scope van 0-100. Controleer de configuratie." & _
                       vEventLogFooter
      end if
  else
    'Schrijf foutmelding naar de eventlog als waarschuwing
    oWSH.LogEvent 2, vEventLogHeader & _
                    "Opgegeven Directory (" & vCleanUPDir & ") kon niet worden gevonden. " & _
                    "Controleer of de directory bestaat of op fouten in de configuratie." & _
                    vEventLogFooter
  end if  
end function

fCleanUPDir "D:Tempphpsession", 1
fCleanUPDir "D:Tempphpupload", 1

' Einde van script

 

PowerShell AD groupmembers

Simple script using dsquery to query groupmembers from an Active Directory group and return the results to screen. The script takes parameters from the commandline (groupmem.ps1 “DOMAIN” “GROUP_NAME”).

[string]$sADPath = dsquery group -domain "$($args[0])" -name "$($args[1])"
$sADPath = "LDAP://" + $sADPath | Foreach-Object {$_ -replace "`"", ""}
$oADGroup = [ADSI]("$sADPath")
$oADGroup.path
$oADGroup.member