Categories
PowerShell Scripting

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
}

 

Categories
PowerShell Scripting

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

 

Categories
PowerShell Scripting

Powershell Stop-Process, WMI & Filtering

Search for specific processes using WMI and then stop these processes.

$vResult1 = Get-WMIObject Win32_Process -filter "CommandLine like '%<argument>%'"
foreach ( $vProcess in $vResult1 ) {
  Stop-Process -Id $vProcess.ProcessId
}

 

Categories
PowerShell Scripting

PowerShell T-SQL Scripting

Article written in the Dutch language…

Met onderstaande commando’s kun je d.m.v. T-SQL gegevens opvragen uit een MSSQL database m.b.v. SQL PowerShell Modules of SQLPS.

$sResult = Invoke-Sqlcmd -Query "SELECT @@SERVERNAME AS Servername;" `
                         -QueryTimeout 3 `
                         -ServerInstance [SERVERNAME][INSTANCE] `
                         -Database master

Vervolgens vraag je de inhoud van bovenstaande voorbeeld d.m.v. variable $sResult.Servername. Bij een een resultaat van meer dan een record worden de values opgeslagen in een array. In dat geval geeft de variabele $sResult.count het aantal geretourneerde regels terug (-gt 1). Je kunt dan bijvoorbeeld de eerste regel van het resultaat opvragen d.m.v. $sResult[0].columnname. Je kunt m.b.v. onderstaande statement afvangen of het resultaat uit meer dan twee regels bestaat.

if ($sResult.count -gt 1) {
  # TestVoorbeeld afhandelen Array...
  write-host "Er zitten " $sResult.count " values in de array..." 
  foreach ($oResultItem in $sResult) {
    $oResultItem.Servername
  }
} else {
  # Afhandelen string value...
  $sResult.Servername
}

Ook is het mogelijk vanuit een specifieke context gegevens op te vragen.

cd SQLSERVER:SQL{servername}{instancename}Databasesmsdb
Invoke-Sqlcmd -Query "SELECT * FROM sysjobs;" -QueryTimeout 3