Redirecting Output and Error to custom PSHostUserInterface
I am using a custom PSHostUserInterface
to handle custom input and output when running PowerShell scripts. By default, it seems that Write-Error
does not use PSHostUserInterface.WriteErrorLine
, and Write-Output
does not use any of the available functions.
The common answer seems to be using $host.ui.WriteErrorLine()
instead of Write-Error
, but I have a large collection of existing scripts and would prefer not to have to go though and edit all of them. I would like to, if at all possible, redirect error messages such that the message from Write-Error "message"
is passed as $host.ui.WriteErrorLine("message")
. Is this possible?
In addition to this, I would like to be able to also redirect Write-Output
to PSHostUserInterface.WriteLine
. To make matters a bit simpler, all calls to Write-Output
are strings, so although a PSObject
is spawned when it is called, it is guaranteed to only be a string.
I realize this may not be the best practice, but all of the scripts in question (and there are many of them) are in-house and use the basic Write-*
syntax, so keeping the scripts as-is is much preferred to changing all of them.
c# powershell
add a comment |
I am using a custom PSHostUserInterface
to handle custom input and output when running PowerShell scripts. By default, it seems that Write-Error
does not use PSHostUserInterface.WriteErrorLine
, and Write-Output
does not use any of the available functions.
The common answer seems to be using $host.ui.WriteErrorLine()
instead of Write-Error
, but I have a large collection of existing scripts and would prefer not to have to go though and edit all of them. I would like to, if at all possible, redirect error messages such that the message from Write-Error "message"
is passed as $host.ui.WriteErrorLine("message")
. Is this possible?
In addition to this, I would like to be able to also redirect Write-Output
to PSHostUserInterface.WriteLine
. To make matters a bit simpler, all calls to Write-Output
are strings, so although a PSObject
is spawned when it is called, it is guaranteed to only be a string.
I realize this may not be the best practice, but all of the scripts in question (and there are many of them) are in-house and use the basic Write-*
syntax, so keeping the scripts as-is is much preferred to changing all of them.
c# powershell
add a comment |
I am using a custom PSHostUserInterface
to handle custom input and output when running PowerShell scripts. By default, it seems that Write-Error
does not use PSHostUserInterface.WriteErrorLine
, and Write-Output
does not use any of the available functions.
The common answer seems to be using $host.ui.WriteErrorLine()
instead of Write-Error
, but I have a large collection of existing scripts and would prefer not to have to go though and edit all of them. I would like to, if at all possible, redirect error messages such that the message from Write-Error "message"
is passed as $host.ui.WriteErrorLine("message")
. Is this possible?
In addition to this, I would like to be able to also redirect Write-Output
to PSHostUserInterface.WriteLine
. To make matters a bit simpler, all calls to Write-Output
are strings, so although a PSObject
is spawned when it is called, it is guaranteed to only be a string.
I realize this may not be the best practice, but all of the scripts in question (and there are many of them) are in-house and use the basic Write-*
syntax, so keeping the scripts as-is is much preferred to changing all of them.
c# powershell
I am using a custom PSHostUserInterface
to handle custom input and output when running PowerShell scripts. By default, it seems that Write-Error
does not use PSHostUserInterface.WriteErrorLine
, and Write-Output
does not use any of the available functions.
The common answer seems to be using $host.ui.WriteErrorLine()
instead of Write-Error
, but I have a large collection of existing scripts and would prefer not to have to go though and edit all of them. I would like to, if at all possible, redirect error messages such that the message from Write-Error "message"
is passed as $host.ui.WriteErrorLine("message")
. Is this possible?
In addition to this, I would like to be able to also redirect Write-Output
to PSHostUserInterface.WriteLine
. To make matters a bit simpler, all calls to Write-Output
are strings, so although a PSObject
is spawned when it is called, it is guaranteed to only be a string.
I realize this may not be the best practice, but all of the scripts in question (and there are many of them) are in-house and use the basic Write-*
syntax, so keeping the scripts as-is is much preferred to changing all of them.
c# powershell
c# powershell
edited Jan 2 at 21:51
Ansgar Wiechers
145k13132190
145k13132190
asked Jan 2 at 14:39
HausHaus
589212
589212
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can overwrite Write-Error function. You can put new definition at the beginning of each script or save it as a module to apply new definition across all scripts
function write-error {param($errMsg)
$host.ui.WriteErrorLine($errMsg)
}
To invoke original Write-Error cmdlet you can use
Microsoft.PowerShell.UtilityWrite-Error
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54008263%2fredirecting-output-and-error-to-custom-pshostuserinterface%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can overwrite Write-Error function. You can put new definition at the beginning of each script or save it as a module to apply new definition across all scripts
function write-error {param($errMsg)
$host.ui.WriteErrorLine($errMsg)
}
To invoke original Write-Error cmdlet you can use
Microsoft.PowerShell.UtilityWrite-Error
add a comment |
You can overwrite Write-Error function. You can put new definition at the beginning of each script or save it as a module to apply new definition across all scripts
function write-error {param($errMsg)
$host.ui.WriteErrorLine($errMsg)
}
To invoke original Write-Error cmdlet you can use
Microsoft.PowerShell.UtilityWrite-Error
add a comment |
You can overwrite Write-Error function. You can put new definition at the beginning of each script or save it as a module to apply new definition across all scripts
function write-error {param($errMsg)
$host.ui.WriteErrorLine($errMsg)
}
To invoke original Write-Error cmdlet you can use
Microsoft.PowerShell.UtilityWrite-Error
You can overwrite Write-Error function. You can put new definition at the beginning of each script or save it as a module to apply new definition across all scripts
function write-error {param($errMsg)
$host.ui.WriteErrorLine($errMsg)
}
To invoke original Write-Error cmdlet you can use
Microsoft.PowerShell.UtilityWrite-Error
answered Jan 2 at 15:22
Mike TwcMike Twc
1,1961513
1,1961513
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54008263%2fredirecting-output-and-error-to-custom-pshostuserinterface%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown