Powershell - 尝试在出现错误时出现空行

问题描述:

我试图在发现错误时在输出中创建空行。这可能吗?Powershell - 尝试在出现错误时出现空行

这里是我的代码:

$list = ForEach ($mailbox in $mailboxes) { 
    Get-Mailbox $mailbox | select primarysmtpaddress 
    If (ErrorAction == $True) { Write-Output `n} 
} 

$mailboxes被指派给正常使用一个获取内容的命令。所选的primarysmtpaddress也正常工作。 If语句和其中的代码不是。

编辑:更正“N有n

+0

嘿jisaak!我在代码之前尝试了四个空格。你是如何得到它正确显示的? –

+0

只是标记的代码,并使用格式化的'{}'的editior ;-) –

+0

@ArthurMarquis标准的方法,以纪念在计算器上一个问题的回答是*接受*内其中一个答案可以点击下面的对勾投票按钮。没有必要把它放在标题中。 –

的`正确的转义字符我会建议您使用trycatch,并写在catch中的空行。

您同时还使用了不正确的转义字符:http://ss64.com/ps/syntax-esc.html

ForEach ($mailbox in $mailboxes) 
{ 
    try 
    { 
     Get-Mailbox $mailbox | select primarysmtpaddress 
    } 
    catch 
    { 
     Write-Host `n 
    } 
} 
+0

我现在就试试吧! –

+0

似乎没有工作,仍然得到像正常列表这里是我使用的确切代码。 '$ list = foreach($ mailboxes中的$ mailbox){try {Get-Mailbox $ mailbox | select primarySMTPaddress} catch {Write-Host'n}} 对不起,我仍然没有得到正确的代码格式。我会努力的。 –

既然你保存到你不能使用Write-Host一个变量,但你可以返回一个空字符串。 Select primarysmptpaddress返回pscustomobjectprimarysmtpaddress属性。由于我们在出错时返回空白字符串,因此我将使用-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 
     "" 
    } 
} 
+1

Frode F.这完美地工作。我没有尝试没有-ErrorAction Stop,所以我无法确定它是否有必要。非常感谢您花时间帮助PowerShell noobie!我将编辑帖子将其标记为已回答。再次感谢! –

+1

没问题。您不必编辑标题。您使用答案左侧的复选标记标记正确的答案。这将结束这个问题。欢迎来到*并祝你好运。 :-) –