PowerShell: Remote Sessions (Mandant anlegen ab 2013 R2)
Verfasst: 13. August 2015 00:56
Szenario: Wenn in einer Datenbank kein Mandant vorhanden ist, ist ab NAV 2013 R2 kein Start des Windowsclient mehr möglich, da dieser aus der Entwicklungsumgebung nicht mehr angelegt werden kann.
Mit der PowerShell ist das bei laufender Serverinstanz jederzeit möglich, dazu kann man sich entweder auf dem Server per Remotedesktopverbindung als Adminstrator anmelden und das dort direkt vornehmen oder eleganter lokal aus der eigenen PowerShell durch Aufbau einer separaten Session. Das hat auch den Vorteil, dass man dort u.U. nicht einem anderen Kollegen eine bereits laufende Remotesession am Server abklemmt .
Voraussetzung: Ab Windows Server 2012 ist Enable-PSRemoting freigegeben, bei älteren Servern muss man dieses manuell machen.
Die notwendigen Befehle bei manueller Eingabe und einer Ausführung im Batch unterschieden sich dabei.
Für beide Verfahren gilt:
Dass man als Adminstrator angemeldet ist (die NavAdminTools sind sonst nicht nutzbar) sollte man natürlich bei der Eingabe aller Befehle grundsätzlich beachten. Die NAV-Cmdlets selber sind unkritisch, aber ein falscher PowerShell-Befehl im falschen Verzeichnis kann fatale Folgen für das Serverbetriebssystem haben
Beispiel manuelle Eingabe
Anmeldung am Server NAVSERVER1 mittels Enter-PSSession als Administrator, um dort für die Datenbank mit dem laufenden NAV-Serverdienst NAMENAVSERVICE1 einen Mandanten TEST123 anzulegen.
Nach Eingabe des Passworts kann man fortfahren, der Servername wird mit eckigen Klammern angezeigt.
[NAVSERVER1]: gefolgt von "PS" und dem Serverpfad in dem man sich befindet (Vorgabepfad ist der "Documents"-Ordner).
Import der NavAdminTools, Laufwerk C: ist jetzt das Serverlaufwerk. Bei NAV 2015 im Pfad 80 statt 71 eintragen.
New-NAVCompany ausführen
Remotesession verlassen um lokal weiterzuarbeiten:
Codeblock im Batch
Zur Laufzeit eines Skripts dagegen funktioniert Enter-PSSession nicht, auch wenn hier das Anmeldefenster zur Eingabe des Administratorpassworts erscheint, da dieser Befehl nur für interaktive Benutzung gedacht ist.
Statt dessen wird hier nach Eingabe des Passworts mit Get-Credential (der ebenfalls das obige Fenster aufruft) mit New-PSSession eine Variable $MySession belegt und durch Invoke-Command die Befehlszeilen übergeben.
Tags: mstsc
Mit der PowerShell ist das bei laufender Serverinstanz jederzeit möglich, dazu kann man sich entweder auf dem Server per Remotedesktopverbindung als Adminstrator anmelden und das dort direkt vornehmen oder eleganter lokal aus der eigenen PowerShell durch Aufbau einer separaten Session. Das hat auch den Vorteil, dass man dort u.U. nicht einem anderen Kollegen eine bereits laufende Remotesession am Server abklemmt .
Voraussetzung: Ab Windows Server 2012 ist Enable-PSRemoting freigegeben, bei älteren Servern muss man dieses manuell machen.
Die notwendigen Befehle bei manueller Eingabe und einer Ausführung im Batch unterschieden sich dabei.
Für beide Verfahren gilt:
Dass man als Adminstrator angemeldet ist (die NavAdminTools sind sonst nicht nutzbar) sollte man natürlich bei der Eingabe aller Befehle grundsätzlich beachten. Die NAV-Cmdlets selber sind unkritisch, aber ein falscher PowerShell-Befehl im falschen Verzeichnis kann fatale Folgen für das Serverbetriebssystem haben
Beispiel manuelle Eingabe
Anmeldung am Server NAVSERVER1 mittels Enter-PSSession als Administrator, um dort für die Datenbank mit dem laufenden NAV-Serverdienst NAMENAVSERVICE1 einen Mandanten TEST123 anzulegen.
- Code:
Enter-PSSession -computerName NAVSERVER1 -credential <domainname>\administrator
Nach Eingabe des Passworts kann man fortfahren, der Servername wird mit eckigen Klammern angezeigt.
[NAVSERVER1]: gefolgt von "PS" und dem Serverpfad in dem man sich befindet (Vorgabepfad ist der "Documents"-Ordner).
Import der NavAdminTools, Laufwerk C: ist jetzt das Serverlaufwerk. Bei NAV 2015 im Pfad 80 statt 71 eintragen.
- Code:
Import-Module "C:\Program Files\Microsoft Dynamics NAV\71\Service\NavAdminTool.ps1" -force | out-null
New-NAVCompany ausführen
- Code:
New-NAVCompany -ServerInstance NAMENAVSERVICE1 -Tenant Default -CompanyName TEST123
Remotesession verlassen um lokal weiterzuarbeiten:
- Code:
Exit-PSSession
Codeblock im Batch
Zur Laufzeit eines Skripts dagegen funktioniert Enter-PSSession nicht, auch wenn hier das Anmeldefenster zur Eingabe des Administratorpassworts erscheint, da dieser Befehl nur für interaktive Benutzung gedacht ist.
Statt dessen wird hier nach Eingabe des Passworts mit Get-Credential (der ebenfalls das obige Fenster aufruft) mit New-PSSession eine Variable $MySession belegt und durch Invoke-Command die Befehlszeilen übergeben.
- Code:
$cred = Get-Credential <domainname>\administrator
$MySession = New-PSSession -computerName NAVSERVER1 -credential $cred
invoke-command -Session $MySession -scriptblock {Import-Module "C:\Program Files\Microsoft Dynamics NAV\71\Service\NavAdminTool.ps1" -force | out-null}
invoke-command -Session $MySession -scriptblock {New-NAVCompany -ServerInstance NAMENAVSERVICE1 -Tenant Default -CompanyName TEST123}
Remove-PSSession $MySession
Tags: mstsc