Win10: Startmenu stopped working

Eines Tages gegen Mittags ging plötzlich das Startmenü meines Win 10 Rechners nicht mehr auf. Erst wenn das passiert merkt man wie oft man das benötigt. Ich habe zwar die Meistverwendeten Programme in der Tastleite angeheftet und einige andere kann ich via „Win“+“R“ (Ausführen Dialog) aufrufen aber eben nicht alle.

Nach langem Googeln und suchen fand ich dann diesen Eintrag:
https://superuser.com/questions/1059411/windows-10-shellexperiencehost-crashes

Die Lösung bestand bei mir jedoch aus 2 Schritten:

  1. Ich musste die lokalen Settings aus meinem Profil-Ordner wegsichern! Der Roaming-Teil war nicht das Problem.
  2. Erst danach zeigten die Powershell-Befehle aus dem Link oben den gewünschten Erfolg!

Vielleicht nicht ungut zu wissen:

  • Der Powershell Befehl funktionierte nur wenn kein anderer User an dem Rechner angemeldet war!
  • Ich habe im Endeffekt zuerst mein Profil von diesem Rechner komplett gelöscht (via Systemsteuerung – System – Erw. Systemsteuerung – Benutzerprofile) und danach nur mehr die benötigten Teile zurückkopiert

 

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:

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

 

 

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.

Powershell: How to batch-convert Word files to PDF

Kurz gegoogelt und, wie so oft, die Antwort bei stackoverflow gefunden:

$documents_path = 'c:\doc2pdf'

$word_app = New-Object -ComObject Word.Application

# This filter will find .doc as well as .docx documents
Get-ChildItem -Path $documents_path -Filter *.doc? | ForEach-Object {
    $document = $word_app.Documents.Open($_.FullName)
    $pdf_filename = "$($_.DirectoryName)\$($_.BaseName).pdf"
    $document.SaveAs([ref] $pdf_filename, [ref] 17)
    $document.Close()
}

$word_app.Quit()

Quelle: https://stackoverflow.com/questions/16534292/basic-powershell-batch-convert-word-docx-to-pdf

Sharepoint 2016: Create sitecollection with customized template via powershell

Ich habe mir ein Script erstellt, mit dem man eine SiteCollectoin erstellen kann, die KEINE Sharepoint Standard-Vorlage verwendet. Hier ein paar Links, die mit hilfreich waren.

Ich habe das ganze in mein Script integriert, mit dem ich bereits bisher Sites bzw. auch Site-Collections mit meinem eigenen Branding versehen habe. Nun läuft alles auf einmal durch 😉

Falls wer das fertige Script haben möchte bitte einfach bei mir melden

Sourcen: