WinSCP + Powershell: How to sync folders via SSH

Wenn man einen Ordner zwischen dem lokalen Rechner und einem SSH-Host online syncen möchte, dann kann man das auch recht schön automatisieren. Dazu kann man WinSCP verwenden. Ich habe das mit Powershell umgesetzt, aber man kann WinSCP auf mit C#, J-Script usw. „automatisieren“.

Hier ein paar Links, die mir geholfen haben:

Windows Server: DHCP – Create custom DHCP options

Wenn man einen DHCP Server konfigurieren muss kommt man manchmal in die Situation, dass man eigene DHCP-Options erstellen muss.Über die Kommandezeile geht das so:

netsh
dhcp server 

#übersicht über befehle:
show
add
del

# add a Vendor Class
add class "Vendor IP Phone" "Class for DHCP-Options for Vendor IP-Phones" Vendor 1
# to delete a vendor class: del class "Vendor IP Phone"

# add DHCP Options
add optiondef 3 "PBX Address" IPADDRESS 0 vendor="Vendor IP Phone"
add optiondef 4 "SIP Port PBX" WORD 0 vendor="Vendor IP Phone"
add optiondef 5 "SIP Port Phone" WORD 0 vendor="Vendor IP Phone"
add optiondef 7 "VLAN Prio" BYTE 0 vendor="Vendor IP Phone"
add optiondef 8 "VLAN ID/Enabled" WORD 0 vendor="Vendor IP Phone"
add optiondef 9 "VLAN PC Prio" BYTE 0 vendor="Vendor IP Phone"
add optiondef 10 "VLAN PC ID/Enabled" WORD 0 vendor="Vendor IP Phone"
add optiondef 11 "VLAN PC port Tags" BYTE 0 vendor="Vendor IP Phone"

# to delte an option: del optiondef 4 vendor="Aamadeus IP Phone"

Die Vendor-Class kann auch mit einem Dialog angelegt werden:
Im DHCP-Fenster: Eintrag „IPv4“ anklicken, dann im Menü „Action“ „Define Vendpr classes“.

Das geht auch mit Powershell (habe ich aber nicht getestet!): https://blogs.technet.microsoft.com/poshchap/2015/12/18/use-powershell-to-add-a-vendor-specific-class-to-windows-dhcp/

Sourcen:

Which CMS is used by a specific website?

Falls ihr mal feststellen wollt, mit welchem CMS System eine Website aufgebaut, gibt es diese praktische Seite:

https://builtwith.com

Diese Website erkennt ziemlich viele CMS recht zuverlässig. ich habe das getestet mit Webseiten die mit Joomla, WordPress, Plone, Drupal und Typo3 erstellt wurden. Bie meinen Tests wurde alle richtig erkannt!

Javascript: mark.js – JavaScript keyword highlighter

Ich hatte die Anforderung auf einer Sharepoint-Seite eine einfache Suche einzubauen. Nichts großartiges: Nur eine Möglichkeit auf einer einzelnen Seite nach Vorkommen von bestimmten Buchstabenkombinationen zu suchen. Nach kurzem googeln fand ich mark.js. Das ist ein kleines aber feines jQuery-Plugin, mit dem man die Fundstellen von Such-Texten hervorheben kann.Das ist einfach einzubauen und die Hervorhebung kann auch einfach via CSS konfiguriert werden!

Sourcen:

 

Sharepoint: Get the list GUID within workflow

Wie gelangt man in einem Workflow im Sharepoint-Designer zur GUID der aktuellen Liste oder Bibliothek?

  1. Use the „Extract substring from End of String“ Action to copy 108 characters from the end of the Workflow Context: Workflow Status URL (Output to Variable:WorkflowStatusURLWithListGUID)
  2. Use the „Extract substring from Start of String“ Action to copy 44 characters from start of the WorkflowStatusURLWithListGUID (Output to Variable:ListGUID)
  3. You can now use the Workflow Variable ListGUID within your custom actions or to construct dynamic strings where Current List GUID is required

Wozu könnte man das brauchen: Wenn man z.B. in einer Email für ein neues Element direkt auf der Genehmigungsformular verlinken möchte 😉

Source: http://ragavj.blogspot.co.at/2015/12/how-to-get-current-list-guid-within.html

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