PowerShell: Remote Sessions (Mandant anlegen ab 2013 R2)

Bild Tipps & Tricks zu den Dynamics NAV Versionen
Hier bitte keine Fragen stellen, sondern nur bereits vorhandene Tricks veröffentlichen.
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie
Hier bitte keine Fragen stellen, sondern nur bereits vorhandene Tricks veröffentlichen.

PowerShell: Remote Sessions (Mandant anlegen ab 2013 R2)

Beitragvon Kowa » 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 :wink: .

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

Passwort2.png
Passwort2.png (21.48 KiB) 2628-mal betrachtet

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
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Schemasynchronisierung vorschalten

Beitragvon Kowa » 14. August 2015 11:00

Da fĂĽr neue Mandanten die Schemasynchronisierung jeweils aktuell sein muss, kann man das ggf. ĂĽber diese Zusatzzeile vorher mit erledigen lassen
Code: Alles auswählen
invoke-command -Session $MySession -scriptblock {Sync-NAVTenant -ServerInstance NAMENAVSERVICE1 -Force -Mode Sync}

Für Testdatenbanken kann man aus dem -Mode Sync ein -Mode ForceSync machen, dann werden Altlasten in um- und ausgebauten Feldern gelöscht. Den Mode-Schalter gibt es erst ab NAV 2015, in NAV 2013 R2 gilt hier die Clienteinstellung unter Optionen "Datenverlust durch Tabellenänderung verhindern".

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 {Sync-NAVTenant -ServerInstance NAMENAVSERVICE1 -Force -Mode Sync}
invoke-command -Session $MySession -scriptblock {New-NAVCompany -ServerInstance NAMENAVSERVICE1 -Tenant Default -CompanyName TEST123}
Remove-PSSession $MySession
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Passwort aus verschlĂĽsselter Datei auslesen (Single-User)

Beitragvon Kowa » 15. Dezember 2015 11:38

Falls die Serveranmeldung nicht jedesmal manuell erfolgen soll, kann man das Passwort verschlĂĽsselt mittels ConvertTo-SecureString in einer Datei abspeichern und diese dann zur Laufzeit auslesen.

Dazu wird einmalig in der Powershell das Passwort in einer verschlĂĽsselten Datei gespeichert, hier auf Laufwerk X: im Temp-Ordner.
Code: Alles auswählen
"P@ssWord1" | ConvertTo-SecureString -AsPlainText -Force | Out-File "X:\Temp\Passwort.xxx"


Der Anfang vom Inhalt einer solchen Datei sieht dann z.B. so aus:
passwort.png

Im Skript werden dann diese Zeilen hinzugefügt, hier natürlich für <domainname> die eigene Domäne einsetzen und den Dateipfad anpassen :wink: …
Code: Alles auswählen
$User = '<domainname>\administrator'
$File = "X:\Temp\Passwort.xxx"
$cred = New-Object -TypeName System.Management.Automation.PSCredential ` -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)

…und diese entfernt.
Code: Alles auswählen
$cred = Get-Credential <domainname>\administrator

Dadurch wird die Anmeldefenster unterbunden und das Skript meldet sich selbstständig am Server an.

Im obigen Beispiel wird ohne Verschlüsselungskey gearbeitet, dadurch ist die Verschlüsselung vom User und der Hardware abhängig (Data Protection application programming interface (DPAPI)), andere User-Hardware-Kombinationen können die Datei nicht entschlüsseln. Beim Wechsel der eigenen Hardware müssen die verschlüsselten Passworte neu erzeugt werden.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

VerschlĂĽsselungen im Multi-User-Betrieb

Beitragvon Kowa » 15. Dezember 2015 13:09

Falls die Anmeldungen von jedem beliebigen User (der das Skript ausführen kann) vorgenommen werden sollen, müssen die Dateien durch einen bekannten zusätzlichen Schlüssel allgemein lesbar verschlüsselt werden und die Skripte diesen Key ebenfalls enthalten.

Durch den Zusatzparameter -key kann ĂĽber ein Array mit 16, 24 oder 32 Byte dieser SchlĂĽssel mitgegeben werden.
Hier in der einfachsten Form als Array 1..16.
Code: Alles auswählen
"P@ssWord1" | ConvertTo-SecureString -key (1..16) -AsPlainText -Force | Out-File "X:\Temp\Passwort.xxx"

Falls man das Passwort in der PowerShell verdeckt eingeben möchte, den Anfang der Zeile durch Read-Host "<Text im Eingabefenster>" -AsSecureString ersetzen:
Code: Alles auswählen
Read-Host "Enter Password" -AsSecureString | ConvertTo-SecureString -key (1..16) -AsPlainText -Force | Out-File "X:\Temp\Passwort.xxx"

ReadPassword.png

Im Skript das Keyarray analog als Parameter mit dazu, um die Entschlüsselung hardwareunabhängig vorzunehmen.
Code: Alles auswählen
$cred = New-Object -TypeName System.Management.Automation.PSCredential ` -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString -key (1..16))
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01


ZurĂĽck zu NAV Tipps & Tricks

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast