gpt4 book ai didi

powershell - PowerShell here-strings 中的变量必须在哪里初始化?

转载 作者:行者123 更新时间:2023-12-03 16:31:56 26 4
gpt4 key购买 nike

我有一个相当复杂的 SQL 查询,我想在 PowerShell 脚本的 here-string 中使用。在查询中,我想用 PowerShell 变量替换某些值。我试图准确了解我需要在哪里声明和初始化将在此处字符串中使用的变量。

简化示例:

$SqlQuery = @"
update MyTable
set foo = $bar
where baz = $quux
"@

...

foreach ($part in $parts) {
$bar = $part[0]
$quux = $part[1]

Run-SqlNonQuery $SqlQuery #Run-SqlNonQuery is a funct. that executes the query
}

我在顶部声明了 here-string,它引用了几个 PowerShell 变量,$bar 和 $quux,每次循环都会改变。

但是,我在运行脚本时遇到了错误。当我运行 SQL 跟踪时,PowerShell 变量出现在 PS 脚本中的位置没有任何值。

当在这样的字符串中调用时,PowerShell 变量会被插值吗?我是否需要将整个 here-string inside 放在初始化变量的循环中?像这样的东西的正确结构是什么?

我在 Windows 7、.Net 4、VS2010 上运行 PowerShell。我不清楚版本; $Host 返回

Name             : PowerConsole
Version : 1.0.30222.0

$PSVersionTable 返回

PSVersion             2.0                                                      
PSCompatibleVersions {1.0, 2.0}
BuildVersion 6.1.7601.17514

最佳答案

已编辑以包含 Mark 的建议假设您将数组的顺序部分与 {x} 等使用的顺序相匹配。

$SqlQuery = @"
update MyTable
set foo = {0}
where baz = {1}
"@

...

foreach ($part in $parts) {
Run-SqlNonQuery $SqlQuery -f $part #Run-SqlNonQuery is a funct. that executes the query
}

原版

这应该可以完成工作

$SqlQuery = @"
update MyTable
set foo = {0}
where baz = {1}
"@

...

foreach ($part in $parts) {
$bar = $part[0]
$quux = $part[1]

Run-SqlNonQuery $SqlQuery -f $bar, $quux #Run-SqlNonQuery is a funct. that executes the query
}

如果您想了解更多信息谷歌“powershell 字符串格式”

HTH,马特

关于powershell - PowerShell here-strings 中的变量必须在哪里初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com