Powershell - 尝试在出现错误时出现空行
我试图在发现错误时在输出中创建空行。这可能吗?Powershell - 尝试在出现错误时出现空行
这里是我的代码:
$list = ForEach ($mailbox in $mailboxes) {
Get-Mailbox $mailbox | select primarysmtpaddress
If (ErrorAction == $True) { Write-Output `n}
}
$mailboxes
被指派给正常使用一个获取内容的命令。所选的primarysmtpaddress也正常工作。 If语句和其中的代码不是。
编辑:更正“N有n
的`正确的转义字符我会建议您使用try
和catch
,并写在catch中的空行。
您同时还使用了不正确的转义字符:http://ss64.com/ps/syntax-esc.html
ForEach ($mailbox in $mailboxes)
{
try
{
Get-Mailbox $mailbox | select primarysmtpaddress
}
catch
{
Write-Host `n
}
}
我现在就试试吧! –
似乎没有工作,仍然得到像正常列表这里是我使用的确切代码。 '$ list = foreach($ mailboxes中的$ mailbox){try {Get-Mailbox $ mailbox | select primarySMTPaddress} catch {Write-Host'n}} 对不起,我仍然没有得到正确的代码格式。我会努力的。 –
既然你保存到你不能使用Write-Host
一个变量,但你可以返回一个空字符串。 Select primarysmptpaddress
返回pscustomobject
与primarysmtpaddress
属性。由于我们在出错时返回空白字符串,因此我将使用-ExpandProperty primar...
来仅获取字符串值,因此我们在成功和失败时都具有相同类型的对象。
$list = ForEach ($mailbox in $mailboxes) {
#Try/Catch to catch errors
try {
#Added -ErrorAction Stop to make sure it goes to catch on error. Might not be necessary (depends on the cmdlet).
#Used ExpandProperty to only get the value of primarysmptaddress as a string (since no mail = empty string in catch-block)
Get-Mailbox $mailbox -ErrorAction Stop | Select-Object -ExpandProperty primarysmtpaddress
} catch {
#Blank value. Can't use Write-Host/Out-Host since you're saving to a variable
""
}
}
Frode F.这完美地工作。我没有尝试没有-ErrorAction Stop,所以我无法确定它是否有必要。非常感谢您花时间帮助PowerShell noobie!我将编辑帖子将其标记为已回答。再次感谢! –
没问题。您不必编辑标题。您使用答案左侧的复选标记标记正确的答案。这将结束这个问题。欢迎来到*并祝你好运。 :-) –
嘿jisaak!我在代码之前尝试了四个空格。你是如何得到它正确显示的? –
只是标记的代码,并使用格式化的'{}'的editior ;-) –
@ArthurMarquis标准的方法,以纪念在计算器上一个问题的回答是*接受*内其中一个答案可以点击下面的对勾投票按钮。没有必要把它放在标题中。 –