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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2015, 14:00   #1  
Blog bot is offline
Blog bot
Участник
 
25,626 / 848 (80) +++++++
Регистрация: 28.10.2006
This coffee break post illustrates how to search a text file for specific words or a phrase. You can do this with Windows PowerShell in any text files, but let's use some Dynamics NAV objects exported as text. Technically speaking we are reading a text file then piping it line for line through a search cmdlet, which pipes matching lines further to a log.txt file.


Coffee Break 5 - Searching through a Dynamics NAV text file
Customer story:

The developer wants an automated way of locating all occurrences of a string (table name, field name, comment, ...) in a country-specific version of Dynamics NAV, in this example the Norwegian version. And we will log the output of this search to a log file in c:NAVAppLog.

Exporting objects from Dynamics NAV:

Prerequisites:

Crete a folder C:MyNAVApp with a subfolder Log so that the resulting full path is C:MyNAVAppLog.

For this purpose we use the Microsoft Dynamics NAV Application Merge Utilities. Note that these install to the equivalent of C:Program Files (x86)Microsoft Dynamics NAV80RoleTailored Client. This time we don't need to import the Management module, only the application merge utilities:

Import-Module "${env:ProgramFiles(x86)}Microsoft Dynamics NAV80RoleTailored ClientMicrosoft.Dynamics.Nav.Model.Tools.psd1"
  • Note 1: Make sure to import Microsoft.Dynamics.Nav.Model.Tools.psd1, and not NavModelTools.ps1.
  • Note 2: This will load the path for finsql.exe too, and use the finsql in the client folder.
Set a few variables. Assuming that we work in folder C:MyNAVApp, and we will be searching for where "G/L Account" table reference is used. And we will log the output of this search to a log file in the c:MyNAVAppLog folder.

$objectPath = 'C:MyNAVApp'
$sourcepath = Join-Path $ObjectPath 'MyObjects'

$NAVobjects = Join-Path $ObjectPath 'NAVobjects.txt'
$LogPath = Join-Path $ObjectPath 'logwhereused.txt'
#Note, a search string can also be an array of strings
$SearchString = '”G/L Account”'



Export the objects you like, either all objects:
Export-NAVApplicationObject -DatabaseName "Demo Database NAV (8-0)" -DatabaseServer ".NAVDEMO" -Path $NAVObjectFile

Or filter (choose the filter you like):

$FilterString = "Version List=*NAVNO*"
#or

$FilterString = "Modified=Yes"
Export-NAVApplicationObject -DatabaseName "Demo Database NAV (8-0)" -DatabaseServer ".NAVDEMO" -Path $NAVObjects -Filter $FilterString

#Split into individual object files

split-navapplicationobjectfile -Source $NAVobjects -Destination $sourcepath -PassThru -Force


Now load the list of files in the folder. We're using the -File parameter with Get-ChildItem to limit the scope to files only (sub folders are not included).

$myobjects = Get-ChildItem -Path $SourcePath -Filter *txt -File

The next line shows a very simple way to read through all text files in the specified path (c:MyNAVApp) and for each file searches for the search string (in our case "G/L Account) and for each hit pipe the source line to the log file along with the line number. For this we will use the Select-String cmdlet, that can work directly on Objects with File Info (objects returned by calling Get-ChildItem cmdlet).

$myobjects | Select-String $SearchString | Out-File –Filepath $LogPath

Note that using the parameters and segments above implies that:
  • The script raises an error if the $ObjectPath does not exist.
  • Out-File will overwrite the existing file per pipeline
  • Out-File will append lines to the file, per pipeline object

Jasminka Thunes, Escalation Engineer Dynamics NAV EMEA

Lars Lohndorf-Larsen, Escalation Engineer Dynamics NAV EMEA

Bas Graaf, Senior Software Engineer Dynamics NAV



[img]//feeds.feedburner.com/~r/MicrosoftDynamicsNavTeamBlog/~4/Tg3z4-wtRgw[/img]

Источник: http://feedproxy.google.com/~r/Micro...ject-file.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:42.