@{DisplayName=Firstname Lastname} 需要只是“名字姓氏”,因为 get-mailbox -identity '@{DisplayName=Firstname Lastname} 不起作用。

我尝试使用 -replace cmdlet 删除文本。

$Olduser = Get-MsolUser -all | Where-Object {$_.BlockCredential -eq $True -and $_.isLicensed -eq $false} | Select-Object displayName,userPrincipalName,BlockCredential,isLicensed

$OldUser | fl *

使用 -replace,我预计输出将没有 '@{DisplayName}'
Cannot process argument transformation on parameter 'Identity'. Cannot convert value "@{DisplayName=X X}" to type "Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter". Error: "Cannot conve
rt the "@{DisplayName=X X}" value of type "Deserialized.Selected.Microsoft.Online.Administration.User" to type "Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter"."
    + CategoryInfo          : InvalidData: (:) [Get-Mailbox], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-Mailbox
    + PSComputerName        : outlook.office365.com

最佳答案

您将具有属性的对象类型传递给只需要一个值的参数 ( -Identity )。因此,PowerShell 将该对象转换为字符串,从而生成值 @{DisplayName=Firstname Lastname} 。如果您在将 DisplayName 属性传递给 -Identity 参数之前访问它,您的问题将得到解决。

Get-Mailbox -Identity $OldUser.DisplayName
# Or
$OldUser.DisplayName | Get-Mailbox

您可以通过在控制台输入以下内容来复制类似的行为:
[string]$OldUser

关于powershell - 如何修复@{DisplayName=Firstname Lastname},我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58340935/

10-11 03:05