PowerShell自定义对象属性顺序异常,使用[ordered]语法报错求助
PowerShell自定义对象属性顺序问题的语法错误修复
你的代码报错是因为New-Object的-Property参数无法直接识别紧跟的[ordered]修饰符,PowerShell会把[ordered]误判为属性名的一部分,导致语法解析失败。
正确写法有两种:
- 先定义有序哈希表变量,再传入参数
$orderedProps = [ordered]@{ 'Unique ID' = $sharedmail.PrimarySmtpAddress 'Display Name' = $sharedmail.DisplayName } $AllMailData += New-Object PSObject -Property $orderedProps
- 用括号包裹有序哈希表,强制PowerShell优先解析它
$AllMailData += New-Object PSObject -Property ([ordered]@{ 'Unique ID' = $sharedmail.PrimarySmtpAddress 'Display Name' = $sharedmail.DisplayName })
更简洁的替代写法
直接用[PSCustomObject]转换有序哈希表,不仅能保留属性顺序,代码更简洁:
$AllMailData += [PSCustomObject][ordered]@{ 'Unique ID' = $sharedmail.PrimarySmtpAddress 'Display Name' = $sharedmail.DisplayName }
内容的提问来源于stack exchange,提问作者Alistair Trout
相关产品推荐
相关产品推荐

