Come eseguire una codeunit da PowerShell

Salve lettore, in questo articolo voglio parlarti di come eseguire una codeunit di Business Central tramite PowerShell. L’esigenza potrebbe nascere quando vuoi eseguire delle operazione di aggiornamento che non necessitano di interventi sull’interfaccia utente o semplicemente se non vuoi che l’utente esegua la funzione (in realtà utenti pro potrebbero utilizzarlo, ma non sono mai la maggioranza 😊 )

Lo scenario che ti voglio proporre è quello di una tabella con un campo intero e uno di testo che rappresenta gli utenti personali. Una pagina che mostra la tabella e una codeunit con una funzione dove semplicemente vengono creati dieci utenti.

Table MyUser
Page MyUser
Codeunit My Users Mgt.

Ora dobbiamo pubbicare l’app, altrimenti quando andremo ad eseguire l’istruzione Powershell essa non verrà riconosciuta.

A questo punto siamo pronti per eseguire il comando PowerShell.

Script PowerShell

Come puoi vedere, dopo aver importato il solito modulo per le chiamate ai comandi PowerShell di Business Central, ho eseguito il comando:

Invoke-NAVCodeunit -ServerInstance BC200 -CompanyName “CRONUS Italia S.p.A.” -CodeunitId 50500 -MethodName “CreateMyUser”

Dove per ServerInstance c’è il nome del servizio di Business Central, CompanyName è il nome società sulla quale vogliamo eseguire il comando, CodeunitID è l’ID della codeunit da eseguire. Se non avessi messo altri parametri il comando avrebbe eseguito il codice all’interno del trigger OnRun della codeunit; siccome avevo creato la funzione CreateMyUser, occorre esplicitare il parametro MethodName per eseguire una funzione specifica della codeunit. Inoltre se la funzione avesse avuto anche dei parametri occorreva esplicitarli tramite il parametro Argument.

Nell’immagine seguente il risultato ottenuto.

Result

Per ulteriori informazioni sul comando Invoke-NAVCodeunit puoi sempre fare riferimento alla documentazione Microsoft di questo link.

Spero che questo articolo ti abbia chiarito come sia possibile eseguire codeunit direttamente da PowerShell.

Lascia una risposta