2017-07-19 114 views
1

我分配Get-Mailbox命令给一个变量,这样我可以将此输出到一个日志文件:截断可变文本字符串

$SmtpForwardingAddress = Get-Mailbox -Identity $Upn | Select ForwardingSmtpAddress 
"Email forwarding set to $($SmtpForwardingAddress)" | Tee-Object $logfilepath -Append 

变量$SmtpForwardingAddress回报:

“的电子邮件转发集到@ {ForwardingSmtpAddress = smtp:[email protected]}“

我想修剪这个只是[email protected]值。我试了几件事情,但得到这样的错误下面:

方法调用失败,因为[Selected.System.Management.Automation.PSCustomObject]不包含名为“子”的方法。

方法调用失败,因为[Selected.System.Management.Automation.PSCustomObject]不包含名为“微调”的方法。

任何想法,我可以做什么来获得理想的结果?

+0

'$ SmtpForwardingAddress'的输出是什么? – TheIncorrigible1

+0

如上所示: “@ {ForwardingSmtpAddress = SMTP:[email protected]}” – jshizzle

回答

3

一个对象被存储到像你期待不具备这些方法$SmtpForwardingAddress代替[String]

试试这个:

"Email forwarding set to $(($SmtpForwardingAddress.ForwardingSmtpAddress).TrimStart('smtp:')) 
+0

阿上感谢点。因此,因为它是一个正在存储的对象,所以需要添加属性.ForwardingSmtpAddress以提供修剪方法以使用某些内容? – jshizzle

+0

我*假设*对象的属性指向一个字符串是'smtp:Username @ domain.com'。您可以通过使用'.GetType()'方法来确认。 '@ {}'表示PowerShell对象。例如'@()'是一个数组。 – TheIncorrigible1

+0

是,$ SmtpForwardingAddress.GetType()返回PSCustomObject而$ SmtpForwardingAddress.ForwardingSmtpAddress.GetType()返回的字符串。好知道感谢 – jshizzle

1

在PowerShell中总是有多个解决方案。

$ForwardingAddress = (Get-Mailbox -Identity $Upn).ForwardingSmtpAddress.Split(':')[1] 
"Email forwarding set to $ForwardingAddress" | Tee-Object $logfilepath -Append 
+0

不错,谢谢,虽然这不喜欢。[1]在最后。把这个结果分成三个独立的行,但显然只是想要我敢说的结果是[1]要做的事情? – jshizzle

+0

固定它已经,多余的点没有了;-) – LotPings

+0

开裂的东西。总是很高兴有一个选择。 – jshizzle