首页 > 解决方案 > 只显示变量的一部分?

问题描述

$string = "@{Samaccountname=Fname.Lname}

删除 "@{Samaccountname=" 和尾随 "}" 以便只返回 fname.lname 的最简单方法是什么?

我试过$string.trim("@{Samaccountname=","}")$string -replace {"@{Samaccountname=",""}

甚至尝试过$string.trim("@","{","}"),但我认为有比单独引用每个字符更好的方法。

两者都不起作用..我完全不喜欢正则表达式,所以我没有冒险走这条路。

标签: powershell

解决方案


语法的输出@{propery = value}可能是转换为字符串的自定义对象。明智的做法是使用原始对象、检索目标值并根据需要操作检索到的数据。因此,如果意图只是输出一个属性值,那么使用Select-Object -Expand Propertyor member access $object.Property。否则,不是值类型的对象将包含属性,并且它们到字符串的转换将基于它们的ToString()覆盖方法。

$users = Get-AdUser -Filter "SamAccountName -like '*doe'"
$PropAndValue = $users | Select-Object SamAccountName # the objects' SamAccountName property and their values
$ValueOnly = $users | Select-Object -Expand SamAccountName # returns the objects' SamAccountName values only

"objects with property and value"
$PropAndValue
"`r`nstringified prop and value of first object`r`n"
[string]$PropAndValue[0]
"`r`nproperty values only`r`n"
$ValueOnly
"`r`nstringified first property value`r`n"
[string]$ValueOnly[0]

输出:

objects with property and value

SamAccountName
--------------
jane.doe
john.doe

stringified prop and value of first object

@{SamAccountName=jane.doe}

property values only

jane.doe
john.doe

stringified first property value

jane.doe

推荐阅读