You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure AD查询给CSV导入的组名添加单引号并展开属性

问题场景

我正在使用Azure AD,已导入包含组名的CSV文件,需要为这些组的name属性添加单引号以用于Azure AD查询,但遇到格式错误。

CSV文件内容(myfile.csv)

name
Group Mémos - 1
Group Mémos - 2

尝试的脚本及问题

我最初用以下脚本:

$group = import-csv c:\temp\myfile.csv

foreach ($item in $group)
{
Get-AzureADGroup -Filter "DisplayName eq $('$item.name')" | select ObjectId
}

执行后得到的是'@{Name=Group Mémos - 1}.name',但实际需要的是'Group Mémos - 1'。目前只能通过临时变量作为 workaround:

$item2 = $item.Name
Get-AzureADGroup -Filter "DisplayName eq $('$item2')" | select ObjectId

想知道如何直接展开name属性并添加单引号?

解决方法

有几种方式可以直接在字符串中正确展开对象属性并添加单引号:

方法1:使用子表达式$()

在双引号字符串中,用$()包裹属性访问表达式,就能正确解析属性值:

$group = Import-Csv c:\temp\myfile.csv

foreach ($item in $group) {
    Get-AzureADGroup -Filter "DisplayName eq '$($item.Name)'" | Select-Object ObjectId
}

这里'$($item.Name)'会先执行$item.Name拿到属性值,再把值用单引号包裹,最终生成符合要求的筛选字符串。

方法2:使用字符串格式化

用-f运算符来构造筛选字符串,可读性更强:

$group = Import-Csv c:\temp\myfile.csv

foreach ($item in $group) {
    $filter = "DisplayName eq '{0}'" -f $item.Name
    Get-AzureADGroup -Filter $filter | Select-Object ObjectId
}

{0}会被$item.Name的值替换,自动完成单引号的包裹。

方法3:使用PowerShell的引号嵌套特性

也可以用单引号+双引号的组合来实现(Azure AD筛选器支持双引号包裹值):

$group = Import-Csv c:\temp\myfile.csv

foreach ($item in $group) {
    Get-AzureADGroup -Filter 'DisplayName eq "' + $item.Name + '"' | Select-Object ObjectId
}

这种方式通过字符串拼接,把属性值用双引号包裹,同样能满足查询需求。

内容的提问来源于stack exchange,提问作者Cividan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:54:57