Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB. NET] Accesso a output di Poweshell con System.Management.Automation.dll
Forum - C# / VB.NET - [VB. NET] Accesso a output di Poweshell con System.Management.Automation.dll

Avatar
dylan666 (Normal User)
Pro


Messaggi: 128
Iscritto: 08/09/2009

Segnala al moderatore
Postato alle 14:17
Giovedì, 26/11/2020
Ciao a tutti,
sto cercando di crearmi una interfaccia "rapida" per i comandi che uso più comunemente in Powershell usando questo progetto di partenza:
https://www.youtube.com/watch?v=-59X_KSS0tM

Funziona a meraviglia con il comando Get-Process dell'esempio.
Ho però i seguenti problemi:

1) se dovessi digitare male il comando (es. Get-Processo) come faccio ad avere in finestra l'errore restituito da Powershell?
Ovviamente la domanda non è solo per i comandi digitate male ma è volta a intercettare qualunque messaggio per qualunque errore

2) come mai alcuni comandi come Get-Module non restituiscono alcun testo sebbene siano corretti e vengano eseguiti se lanciati nel classico prompt di Windows?

Grazie in anticipo a chi vorrà aiutarmi.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2173
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:23
Giovedì, 26/11/2020
Testo quotato

1) se dovessi digitare male il comando (es. Get-Processo) come faccio ad avere in finestra l'errore restituito da Powershell?
Ovviamente la domanda non è solo per i comandi digitate male ma è volta a intercettare qualunque messaggio per qualunque errore



Non voglio sempre iniziare con discorsi di critiche e bla bla bla. Ma...
Chiunque abbia almeno aperto un libro di programmazione sa come gestire un eccezione.

Indizio: Try Catch (e gestisci l'eccezione)


Testo quotato


2) come mai alcuni comandi come Get-Module non restituiscono alcun testo sebbene siano corretti e vengano eseguiti se lanciati nel classico prompt di Windows?



A questo non so risponderti.
Ma potresti leggerti i metodi che utilizza questa libreria e capirne il perché.

Se esiste direttamente il prompt di powershell ci sarà un motivo.
con questa libreria puoi inviare comandi e gestire determinate cose ma non tutto credo.


PM Quote
Avatar
dylan666 (Normal User)
Pro


Messaggi: 128
Iscritto: 08/09/2009

Segnala al moderatore
Postato alle 15:52
Venerdì, 27/11/2020
Sul Try/Catch hai ragione, era l'uovo di colombo, mi ero fissato più sul redirect dell'output di Powershell che nella gestione dell'errore in sé lato VB.

Sul punto 2, io sono arrivato a questa documentazione:
https://docs.microsoft.com/en-us/powershell/module/microsof ...

Non capisco però perché non dovrei avere TUTTI gli output dei comandi, a prescindere da quali siano.
Mi veniva in mente: non è che l'output del comando Get-Module non viene gestito correttamente dalla parte PSObject, pur non andando in errore?
Se così fosse, hai suggerimenti sul come intercettare o identificare il tipo di ouptut che arriva in PSObject prima di passarlo allo StringBuilder() ?

Spero di essermi spiegato, l'essere autodidatta di certo non mi aiuta

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2173
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:35
Venerdì, 27/11/2020
Tranquillo sono anche io autodidatta :k: ci siamo passati tutti.
Ti sto rispondendo dal cell al momento non  ho il computer a portata di mano ma,
Osservando velocemente le referenze,
Ho notato un metodo.

InvocationStateChanged.

Credo che questo handle venga chiamato quando viene eseguita un'azione tramite il metodo invoke()
Ovvero quello per eseguire lo script.

Prova as eseguire un override del metodo,
Ebad inserire un messagebox esempio per vedere se quando viene invocato lo script viene eseguito proprio quel metodo, da quel punto ti basta usare l'argomento nel parametro usato dalla funzione ed accedere a tutte le altre voci e variabili.
In seguito da questo void puoi gestire eventuali eccezioni e capire perché alcuni comandi vengono eseguiti, mentre altri no.

Forse per una questione di sicurezza alcuni comandi non vengono eseguiti, ma non so dirti precisamente il problema dove possa essere, non mai usato powershell in questo modo.

Ultima modifica effettuata da Thejuster il 27/11/2020 alle 17:43


PM Quote