powershell - 只显示变量的一部分?
问题描述
$string = "@{Samaccountname=Fname.Lname}
删除 "@{Samaccountname=" 和尾随 "}" 以便只返回 fname.lname 的最简单方法是什么?
我试过$string.trim("@{Samaccountname=","}")
了$string -replace {"@{Samaccountname=",""}
甚至尝试过$string.trim("@","{","}")
,但我认为有比单独引用每个字符更好的方法。
两者都不起作用..我完全不喜欢正则表达式,所以我没有冒险走这条路。
解决方案
语法的输出@{propery = value}
可能是转换为字符串的自定义对象。明智的做法是使用原始对象、检索目标值并根据需要操作检索到的数据。因此,如果意图只是输出一个属性值,那么使用Select-Object -Expand Property
or 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
推荐阅读
- angular - Angular Material Card 响应式 flexLayout
- r - 在ggplot的每个栏中添加计数值?
- javascript - 我的 Javascript 代码使用了 100% 的 CPU 并且无法加载
- node.js - 是否有可以找到屏幕颜色深度的 Node JS 函数或 npm 包?
- python - 无法通过 PIP 安装 SLATE
- css - 使用颜色列表 Vue.js 更改每一行的背景颜色
- javascript - javascript中的Mongo UpdateMany命令不起作用
- c# - Xamarin 形成 youtube 订阅按钮?
- assembly - 操纵 mips 汇编代码以降低缓存未命中率(火星模拟器)
- typescript - 用动态数字推断模板字符串