首页 > 解决方案 > Powershell - 将变量传递给带引号的字符串循环

问题描述

我试图了解如何设置我的脚本,以便单引号将环绕我的变量。我有一个 1500 个客户的列表,我需要为其重复我的脚本,所以我想做一个 foreach 循环。

$customerlist = Invoke-Sqlcmd -Query "SELECT [CustomerNo] FROM [TABLE]" -ServerInstance "SERVER\INSTANCE"
#Loop through 
foreach ($customer in $customerlist)
{
    $inputParams = @{
      "CustomerNo" = "'"+$customer+"'";
    }
....Do rest of script
}

我需要 $inputparams 中的 $customer 变量以单引号中的字符串值显示,例如 '01233456' 而不仅仅是 0123456。我尝试了几种不同的 "'"+$customer+"'" 迭代,但似乎无法获取正确的语法。有人可以帮我吗?

标签: powershell

解决方案


Invoke-Sqlcmd返回[System.Data.DataRow]类型对象,将查询结果的字段名称和值作为其属性(基本上是一个表)。要选择 CustomerNo 中的值,您必须按名称指定值:

# Expand the CustomerNo property to strings
foreach ($customer in $customerlist.CustomerNo) { }

# Or, later in the script:
$inputParams = @{
  CustomerNo = "'$($customer.CustomerNo)'"
}

推荐阅读