AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.09.2016, 13:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
german_nav_developer: “WhereUsed” mit PowerShell
Источник: https://blogs.msdn.microsoft.com/ger...it-powershell/
==============

Mal angenommen ich möchte wissen, wo überall das Feld „Posting Date“ verwendet wird.

Dazu wäre es gut, wenn ich alle Objekte durchsuchen könnte und als Ergebnis eine Liste bekomme die mir sagt, in welchen Objekten die entsprechenden Felder benutzt werden.

Um das mit PowerShell umzusetzen, sind eigentlich nur drei Kommandos notwendig.

  • Export-NAVApplicationObject  -DatabaseName CRONUSDB -Path .\export.txt


Mit Export-NAVApplicationObject wird im obigen Beispiel aus der Datenbank CORNUSDB im aktuellen Verzeichnis eine Datei mit dem Namen export.txt angelegt.

Ich lege dann ein Unterverzeichnis mit dem Namen „Single“ an. Ich möchte in diesem Verzeichnis jedes Objekt als einzelne Datei haben.

  • Split-NAVApplicationObjectFile -Source export.txt -Destination .\Single


Erledigt diese Arbeit.

Im Anschluss daran müssen wir nur noch alle Dateien nach dem gewünschten Feldnamen beispielsweise durchsuchen. Auch dafür gibt es ein Kommando:

  1. Get-ChildItem “.\single” -recurse | Select-String -pattern “Posting Date” | group path | select name, count


Das Ergebnis sieht in etwa so aus (nur ein Auszug der Gesamtliste). Jede Datei ist ein Objekt und wird dann entsprechend aufgelistet und in „Count“ wird angegeben, wie oft der String in der Datei gefunden wurde.


Name                    Count
----                    -----
D:\Temp\TAB271.TXT         8
D:\Temp\TAB169.TXT         9
D:\Temp\TAB331.TXT         3
D:\Temp\TAB270.TXT         8
D:\Temp\TAB167.TXT        12
D:\Temp\TAB1001.TXT        6
D:\Temp\XML1.TXT           3
D:\Temp\REP204.TXT         2
D:\Temp\TAB39.TXT         23
D:\Temp\TAB156.TXT         6
D:\Temp\TAB981.TXT         1


Das Ergebnis können wir in eine Datei umleiten und schon haben wir unsere Liste. Jetzt macht es Sinn, das in ein eigenes Script zu schreiben so dass wir es nach folgendem Schema aufrufen können.

WhereUsed DATENBANK „Pfad für Einzeldateien“ „Exportdateiname“ „Suchtext“

Das Script unten fragt die Parameter ab, wenn sie nicht in der Kommandozeile angegeben sind. Der Export der Objekte kann ein paar Minuten dauern und genauso das Aufteilen in Einzeldateien. Dies wird allerdings nur beim ersten Mal gemacht. Sind die Exportdatei oder die Einzelobjekte schon vorhanden, wird dieser Teil übersprungen. Wichtig ist noch der Import des Moduls. In diesem Beispiel habe ich das Modul für Microsoft Dynamics NAV 2016 genutzt und dort auch die Standardverzeichnisse angegeben. Das müssen Sie ggf. Anpassen.

Viel Spaß damit.

Andreas Günther

Microsoft Dynamics Germany


# Parameter abfragen, wenn Sie nicht angegeben sind.

param (

[parameter(Mandatory=$true)]

[string] $database,


[parameter(Mandatory=$true)]

[string] $singlefiledirectory,


[parameter(Mandatory=$true)]

[string] $ExportFileName,


[parameter(Mandatory=$true)]

[string] $searchtext

)


# Diese Datei der Version anpassen

Import-Module “C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\Microsoft.Dynamics.Nav.Model.Tools.psd1” >null

Get-Command -Module Microsoft.Dynamics.Nav.Apps.Tools


# Wenn nicht alle Parameter angegeben sind, wird eine Fehlermeldung angegeben

if($database -And $singlefiledirectory -And $searchtext -And $ExportFileName)

{


# Sollte die Datei mit den Objekten noch nicht vorhanden sein, werden alle Objekte in den angegebenen Dateinamen exportiert (Endung sollte .txt sein)

# Die Datei sollte nicht im gleichen Verzeichnis liegen wie die Einzelobjekte – da diese sonst nicht exportiert werden

if (-Not (Test-Path $ExportFileName))

{

write-host “Export aller Objekte…”

Export-NAVApplicationObject -DatabaseName $database -Path $ExportFileName >null

}

Else

{

write-host “Export übersprungen $ExportFileName schon vorhanden”

}


# Ist das Verzeichnis für die Einzelobjektdateien nicht leer – wird dieser Schritt übersprungen

if (-Not (Test-Path “$singlefiledirectory\*”))

{

write-host “Aufteilen der Objekte in Einzeldateien…”

Split-NAVApplicationObjectFile -Source “.\export.txt” -Destination $singlefiledirectory

} else

{



write-host “Aufteilen der Datei überprungen $singlefiledirectory ist nicht leer”

}

# Hiermit wird dann im Verzeichnis nach dem Text gesucht und als Ergebnis der Dateiname und die Anzahl der Fundstellen aufgelistet

Get-ChildItem $singlefiledirectory -recurse | Select-String -pattern $searchtext | group path | select name, count

}

Else

{

write-host “Parameter fehlen!”

write-host “Aufruf mit: WhereUsed Datenbank Objektordner DateinameObjektdatei Suchstring”

}




“Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability or fitness for a particular purpose. This mail message assumes that you are familiar with the programming language that is being demonstrated and the tools that are used to create and debug procedures.



Источник: https://blogs.msdn.microsoft.com/ger...it-powershell/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
german_nav_developer: Buildnummern-Übersicht Microsoft Dynamics NAV 2013 Blog bot NAV: Blogs 0 15.05.2016 18:12
Platform updates overview - 3.70.B - NAV2009 R2 Blog bot Dynamics CRM: Blogs 0 07.02.2011 22:06
german_nav_developer: Buildnummern-Übersicht Microsoft Dynamics NAV 2009 SP1 Blog bot Dynamics CRM: Blogs 0 11.06.2010 16:33
german_nav_developer: Buildnummern-Übersicht Microsoft Dynamics NAV 2009 Blog bot Dynamics CRM: Blogs 0 04.06.2010 13:21
Nav developer: Overview of NAV blogs in 2008 Blog bot Dynamics CRM: Blogs 0 07.12.2008 02:18
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.