powershell - 显示“大括号”符号值的变量的写入输出
问题描述
我更像是一个 Linux bash shell 人,并且在 PowerShell 中遇到了让我困惑的东西。我想在 foreach 循环中从 AD 中提取用户名列表并对它们执行特定操作。
在这一点上,我只关心在基于该字符串运行任何重要操作之前是否拉出正确的字符串。这是我正在运行的测试(为保护隐私,方括号中的详细信息已删除):
Import-Module ActiveDirectory
foreach ($x in (Get-ADUser -Filter * -Server "[host]" -SearchBase '[mybase]' | Select-Object SamAccountName)) {
Write-Output "Alias is: $x"
}
所以交易是,如果我在Write-Output
声明中去掉双引号,它看起来很棒并且会打印:
别名是: 用户名1 别名是: 用户名2 别名是: 用户名3
它在每个值之前注入一个换行符,我宁愿从字符串中删除/剥离。
但在双引号内,我反而得到:
别名是:@{SamAccountName=username1} 别名是:@{SamAccountName=username2) 别名是:@{SamAccountName=username3}
我不确定如何从中提取我正在查看的值。我在这里看什么?这是我需要取消引用的东西,还是我需要提取的数组中的东西?或者我的变量值实际上是一个对象而不是一个字符串,我需要以某种方式ToString()
对其进行操作(或等效)?
解决方案
问题在这里:
Select-Object SamAccountName
它返回一个具有SamAccountName
属性的对象。如果您只想要该值,请使用-ExpandProperty
:
Select-Object -ExpandProperty SamAccountName
推荐阅读
- lua - 如何使用对 lua 脚本的内置 mediawiki 支持来解析 wikitext?
- c++ - 指向 C++ 中的向量数组并将其发送到函数
- gradle - 由于 pom 依赖,无法创建我的 JDA 项目的 JAR
- php - 忽略 PHP 警告 SessionHandler::read(): 会话数据文件不是由您的 uid 创建的
- ios - xcode 10更新后,Application Touch point的第一次加载不正确
- ruby - 如何比较prometheus中的相应指标?
- asp.net-mvc - MVC 引导数据表
- go - 我如何编写处理来自 API 的响应/错误的 golang 中间件?
- vue.js - Quasar ScrollArea 重置位置
- android - 在Angular 5中使用ComponentFactoryResolver从类名中解析组件在Android OS上不起作用