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: Alles auswählen
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: Alles auswählen
Import-Module "C:\Program Files\Microsoft Dynamics NAV\71\Service\NavAdminTool.ps1" -force | out-null
New-NAVCompany ausfĂĽhren
- Code: Alles auswählen
New-NAVCompany -ServerInstance NAMENAVSERVICE1 -Tenant Default -CompanyName TEST123
Remotesession verlassen um lokal weiterzuarbeiten:
- Code: Alles auswählen
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: Alles auswählen
$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