Windows Server: SNMP-Service – missing security tab

Wenn man einen Windows Server mit Nagios abfragen möchte passiert hier vieles via SNMP. Damit man im SNMP-Service auch die Security korrekt konfigurieren kann ist dieser Tipp wichtig. Ist zwar ganz einfach aber ich vergesse das immer wieder 😉

Mit dem Servermanager diese drei Features installieren:

  1. SNMP service
  2. SNMP WMI Provider
  3. Remote Server Administration Tools -> Feature Administration Tools -> SNMP Tools

Source: https://joshancel.wordpress.com/2013/04/02/windows-server-2012-no-security-tab-in-snmp/

 

Sharepoint: Set page to fullscreen mode using CSR

Hier ein kleines Schnipsel wie ich in einem meiner Projekte eine Page in den Full-Screen-Modus schalte. Die Source im WWW habe ich mir damals leider nicht notiert. ICh abe das damals verwendet um die Bedienung der Page auf einem Tablet zu erleichtern. Für den User wurde eine Hinweisemeldung eingeblendet, die nach 10 Sekunden wieder verschwand:

window.onload = function() {
    var width = $(window).width();
    console.log("width: " + width);

    if (width < 1000)
    {
        var addText = '<div id="fullScreenModeHint" style="color: red;">Da die Breite des Fensters weniger als 1000 Pixel (' + width + 'px) darstellt, wurde die Website in den "Vollbildmodus" geschalten! Um diesen zu verlassen klicken Sie bitte das entsprechende Icon oben rechts!<br><br><b>Diese Nachricht wird in 10 Sekunden ausgeblendet!!</b><br><br></div>';
        $("#WebPartWPQ3").html(addText + $("#WebPartWPQ3").html());
        //console.log("window onload - set full screen mode");
        SetFullScreenMode(true);        
        
        timeoutID = window.setTimeout(removeFullScreenModeHint, 10000);
    }
};

function removeFullScreenModeHint() {
    $("#fullScreenModeHint").html("");
}

 

SQL: Version numbers

Hier ein paar Links zu den „Übersetzungen“ der Versions-Nummern der MS-SQL-Server-Instanzen. Warum mehrere Links? Weil die ersten Seiten nicht komplett waren und ich erst ganz am Ende (als ich die Tab’s schon wieder geschlossen habe) bemerkt hatte, dass diese Seite (letzter Link) doch komplett ist  😉

https://buildnumbers.wordpress.com/sqlserver/
http://sqlserver-kit.org/en/home/version#microsoft-sql-server-2016-builds
http://sqlserverversions.000webhostapp.com/

 

SQL-Server: Use bcp to export table

Warum dieser Beitrag? Weil es bei der Verwendung von „bcp“ und einem CMD-Script ein paar Fallstricke gibt, über die ich ALLE heute gestolpert bin 😉

Ich fand dieses Beispiel:
https://stackoverflow.com/questions/23852295/export-sql-table-data-with-column-names-to-csv-file

@echo off
bcp "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table_name>'" queryout c:\file.csv -c -r, -T -S <server_name> -d <database_name>
bcp "select * from <table_name>" queryout c:\data.csv -c -t, -T -S <server_name> -d <database_name>
echo. >> c:\file.csv
type c:\data.csv >> c:\file.csv
del c:\data.csv

Hauptproblem war, dass wir hier im Deutschen Sprachraum Umlaute haben und bei dieser Version wurden diese komplett „zerstört“.Das Weiteren hatte ich das Problem, dass in meinen zu exportierenden Daten auch „Mehrzeilige Texte“ vorkamen. Spätestens beim Import nach z.B. Excel bekam ich das Problem, dass Excel nicht mehr unterscheiden konnte zwischen einem Zeilenumbrum innerhalb einer Zelle und einem Zeilenumbruch am Ende einer Zeile!

Zudem war es mir nicht variabel genug, da ich diese Funktion in näherer Zukunft für mehere Tabellen würde ausführen müssen.

Daher erstellte ich ein Powershell-Script:

#
# Getting the data from a sql-database
#
# Export the data via bcp and prepare the data
# with a few find-replace actions to a multi-line-string won'
# make problems at importing
#
# I had the best experience using Libre Office Calc for the import!!
#
#

# Var's to be changed:
$tableName = "talbename"
$db = "databasename"
$server = "servername\instancename"

# WHERE-Clause to limit output
$whereClause = ""

# No changes after here
# =============================================================================

# "home"-Folder
$baseFolder = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition

# bcp-Path
$bcpPath = "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe"

# FileNames
$headerFile = "$baseFolder\header.dat"
$dataFile = "$baseFolder\data.dat"
$resultsFile = "$baseFolder\$tableName.csv"

# Get the header
$queryStr = "Select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '$tableName'" 
& $bcpPath "$queryStr" queryout "$baseFolder\header.dat" -w -r`°´ -T -S $server -d $db

# Get the data
$queryStr = "select * from $tableName"
if ($whereClause)
{
    $queryStr = $queryStr + " " + $whereClause
}
& $bcpPath "$queryStr" queryout "$baseFolder\data.dat" -w -t`°´ -r`~´ -T -S $server -d $db

# Write header-data to result file
$contentHeader = (Get-Content $headerFile -Raw)
$cTemp = $contentHeader.Replace('`°´','";"')
'"' + $cTemp + '"' > $resultsFile

#Write data to result file
$contentData = (Get-Content $dataFile -Raw)
$cTemp = $contentData.Replace('`°´','";"')
$cTemp2 = $cTemp.Replace('`~´','"' + "`n" + '"')
'"' + $cTemp2 + '"' >> $resultsFile

Remove-Item $headerFile
Remove-Item $dataFile

 

Exchange: Get list of user permissions per mailbox

Wie zu erwarten war, handelt es sich hier um einen „Einzeiler“ für Powershell:

Get-Mailbox | Get-MailboxPermission | 
    where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | 
    Select Identity,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}} | 
    Export-Csv -NoTypeInformation mailboxpermissions.csv

Gefunden haben ich dieses schöne Stück Code hier:

How to List all Users Who Have Access to Other Exchange Mailboxes

Einzige Änderung die ich für unsere deutschsprachige Installation machen musste war anstelle dieser Eingrenzung

$_.user.tostring() -ne "NT AUTHORITY\SELF"

eine „not like“ Abfrage zu verwenden:

$_.user.tostring() -NotLike "*\SELBST"

 

Weiterer Link:
https://technet.microsoft.com/de-de/library/aa998218(v=exchg.160).aspx

 

 

IIS8: Rewrite url’s from HTTP to HTTPS

Wenn man mit dem IIS die Verwendung von HTTPS erzwingen möchte benötigt man ein kleines Add-On für den IIS. Es sei denn man hat nur eine  Domäne. Dafür reichen die Board-Mittel.

Mit der „URL rewrite extension“ von MS für den IIS kann man für die einzelnen IIS Sites sehr variable Regeln einstellen was genau wann wohin geroutet werden soll.

Hier die Links dazu:
Die benötigte Erweiterung: https://www.iis.net/downloads/microsoft/url-rewrite
Eine Schritt für Schritt Anleitung: https://blogs.technet.microsoft.com/dawiese/2016/06/07/redirect-from-http-to-https-using-the-iis-url-rewrite-module/

Hier noch ein kleiner Tipp: Nach der Installation das Fenster des IIS kurz schließen und wieder öffnen (Stackoverflow).

Sharepoint: Restore a host name site collection

Da einige Anleitungen im Internet nicht funktioniert haben hier das Script, das bei mir funktioniert hat:

Restore-SPSite http://hnsc.domain.tld 
  -DatabaseServer SQLALIAS -DatabaseName WSS_Content 
  -Path "\\path\to\backup\sitecollection_export.file" 
  -HostHeaderWebApplication http://hnsc.domain.tld 
  -Force

Das Backup wurde übrigens erstellt aus der CA von Sharepoint 2016. Zuerst habe ich ein Backup der ContentDB wiederhergestellt und dann in der CA unter „Backup und Restore“ den Assistenten „Recover data from a unattached content database“ bemüht.