powershell - 仅将文本附加到 Powershell 函数中的某些变量
问题描述
我有一个 Powershell 函数,它遍历一个数组并将属性填充到一个新的 Exchange/Office 365 组。最近提出的挑战是将某些文本添加到仅来自 inputObject 的某些属性中。
这是尝试添加文本之前的核心工作功能:
$allObjects = @(Get-ChildItem -path c:\tmp\json\*.json | Get-Content -Raw | ConvertFrom-Json)
function Import-UnixDL2Group {
[CmdletBinding()]
Param(
[Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
$InputObject
)
Process{
New-UnifiedGroup -Alias $InputObject.alias `
-DisplayName $InputObject.displayname `
-Members $InputObject.members.recipients.value `
-PrimarySmtpAddress $InputObject.emailaddresses.value `
}
}
$allObjects | Import-UnixDL2Group
因此,前置文本需要在 Import-UnixDL2Group 函数之前或期间出现。
我尝试在主要功能的 -alias 和 -displayname 设置中添加“gr-”+,但它不起作用:
function Import-UnixDL2Group {
[CmdletBinding()]
Param(
[Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
$InputObject
)
Process{
New-UnifiedGroup -Alias "gr-" + $InputObject.alias `
-DisplayName "gr-" + $InputObject.displayname `
-Members $InputObject.members.recipients.value `
-PrimarySmtpAddress $InputObject.emailaddresses.value `
}
}
我试图创建一个新函数只是为了添加文本:
function prependGR {
[CmdletBinding()]
Param(
[Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
$InputObject
)
Process {
"gr-" + $InputObject.alias
}
}
$allObjects | prependGR
prependGR 函数产生正确的结果,但它不适用于主要的 Import-UnixDL2Group 函数。
添加另一个变量并在过程中调用 prependGR 函数只会产生 gr- 而不附加实际变量:
Process{
$renameAlias = $InputObject.alias | prependGR
New-UnifiedGroup -Alias $renameAlias `
我一直在尝试在主函数中添加其他参数,但没有成功。
任何指导将不胜感激。
先感谢您!
解决方案
对于诸如被识别为(单个,评估的)命令参数的表达式,您必须将其括在:"gr-" + $InputObject.alias
(...)
New-UnifiedGroup -Alias ("gr-" + $InputObject.alias) ...
或者,使用"..."
带有字符串插值的字符串(字符串扩展):
New-UnifiedGroup -Alias "gr-$($InputObject.alias)" ...
请注意需要将嵌入的$InputObject.alias
表达式包含在其中(仅变量引用$(...)
不需要,例如- 请参阅我的这个答案以了解字符串扩展规则的概述)。"I'm $HOME"
推荐阅读
- machine-learning - nlp.update() 在空白和预训练 SpaCy 模型上是否有区别?
- javascript - 如何在 html 上使用 npmjs SortedSet 库?
- javascript - 使用 JavaScript 对具有值的复杂对象结构进行排序
- microservices - edgex-core-命令 | standard_init_linux.go:228: exec 用户进程导致:exec 格式错误
- c++ - std::greater{} 和 std::greater 之间有什么区别
()? - android - Kotlin Android 创建新目录
- python - Pandas 函数向量化
- java - 如何使用 Java/Kotlin 使用 R 语言脚本/程序或将其转换为 Android 应用程序?
- python-2.7 - 无法使用drpbox API v2 python下载文件
- javascript - Webpack 错误:configuration.module.rules[0] 有一个未知属性 'query'