From be1e84fdb082c3af3a9f6ef7bd38a578841bbde7 Mon Sep 17 00:00:00 2001 From: Anatoli Beliaev Date: Wed, 9 Oct 2019 17:57:10 -0700 Subject: [PATCH 1/3] Trace "Command not found" events --- src/PowerShell/PowerShellManager.cs | 5 +++++ src/PowerShell/StreamHandler.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/PowerShell/PowerShellManager.cs b/src/PowerShell/PowerShellManager.cs index 9e9dd927..bfe7b408 100644 --- a/src/PowerShell/PowerShellManager.cs +++ b/src/PowerShell/PowerShellManager.cs @@ -253,6 +253,11 @@ internal Hashtable InvokeFunction( } catch (RuntimeException e) { + if (e is CommandNotFoundException commandNotFound) + { + _logger.Log(isUserOnlyLog: false, LogLevel.Warning, "Command not found"); + } + Logger.Log(isUserOnlyLog: true, LogLevel.Error, GetFunctionExceptionMessage(e)); throw; } diff --git a/src/PowerShell/StreamHandler.cs b/src/PowerShell/StreamHandler.cs index cec15fcf..43e151a3 100644 --- a/src/PowerShell/StreamHandler.cs +++ b/src/PowerShell/StreamHandler.cs @@ -33,6 +33,11 @@ public void ErrorDataAdding(object sender, DataAddingEventArgs e) { if(e.ItemAdded is ErrorRecord record) { + if (record.FullyQualifiedErrorId == "CommandNotFoundException") + { + _logger.Log(isUserOnlyLog: false, LogLevel.Warning, "Command not found"); + } + _logger.Log(isUserOnlyLog: true, LogLevel.Error, $"ERROR: {_errorRecordFormatter.Format(record)}", record.Exception); } } From ee16f62c718f453a5e45490e49564e97f2046644 Mon Sep 17 00:00:00 2001 From: Anatoli Beliaev Date: Wed, 9 Oct 2019 18:31:11 -0700 Subject: [PATCH 2/3] Move message strings to resources --- src/PowerShell/PowerShellManager.cs | 2 +- src/PowerShell/StreamHandler.cs | 2 +- src/resources/PowerShellWorkerStrings.resx | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/PowerShell/PowerShellManager.cs b/src/PowerShell/PowerShellManager.cs index bfe7b408..8dd6b060 100644 --- a/src/PowerShell/PowerShellManager.cs +++ b/src/PowerShell/PowerShellManager.cs @@ -255,7 +255,7 @@ internal Hashtable InvokeFunction( { if (e is CommandNotFoundException commandNotFound) { - _logger.Log(isUserOnlyLog: false, LogLevel.Warning, "Command not found"); + _logger.Log(isUserOnlyLog: false, LogLevel.Warning, PowerShellWorkerStrings.CommandNotFoundException_Exception); } Logger.Log(isUserOnlyLog: true, LogLevel.Error, GetFunctionExceptionMessage(e)); diff --git a/src/PowerShell/StreamHandler.cs b/src/PowerShell/StreamHandler.cs index 43e151a3..3da1258d 100644 --- a/src/PowerShell/StreamHandler.cs +++ b/src/PowerShell/StreamHandler.cs @@ -35,7 +35,7 @@ public void ErrorDataAdding(object sender, DataAddingEventArgs e) { if (record.FullyQualifiedErrorId == "CommandNotFoundException") { - _logger.Log(isUserOnlyLog: false, LogLevel.Warning, "Command not found"); + _logger.Log(isUserOnlyLog: false, LogLevel.Warning, PowerShellWorkerStrings.CommandNotFoundException_Error); } _logger.Log(isUserOnlyLog: true, LogLevel.Error, $"ERROR: {_errorRecordFormatter.Format(record)}", record.Exception); diff --git a/src/resources/PowerShellWorkerStrings.resx b/src/resources/PowerShellWorkerStrings.resx index 29d82432..a17b6623 100644 --- a/src/resources/PowerShellWorkerStrings.resx +++ b/src/resources/PowerShellWorkerStrings.resx @@ -298,4 +298,10 @@ Failed to enumerate dependency snapshot '{0}' content: {1} + + CommandNotFoundException detected (error). + + + CommandNotFoundException detected (exception). + \ No newline at end of file From fc2c9c09bf1ff2109ae0619c4f9b9920ceda1169 Mon Sep 17 00:00:00 2001 From: Anatoli Beliaev Date: Wed, 9 Oct 2019 23:08:16 -0700 Subject: [PATCH 3/3] Check FullyQualifiedErrorId instead of exception type --- src/PowerShell/PowerShellManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PowerShell/PowerShellManager.cs b/src/PowerShell/PowerShellManager.cs index 8dd6b060..c527b67a 100644 --- a/src/PowerShell/PowerShellManager.cs +++ b/src/PowerShell/PowerShellManager.cs @@ -253,7 +253,7 @@ internal Hashtable InvokeFunction( } catch (RuntimeException e) { - if (e is CommandNotFoundException commandNotFound) + if (e.ErrorRecord.FullyQualifiedErrorId == "CommandNotFoundException") { _logger.Log(isUserOnlyLog: false, LogLevel.Warning, PowerShellWorkerStrings.CommandNotFoundException_Exception); }