正在将值从变量写入文件


$info = Invoke-SQLCmd -ServerInstance $Server -Database $Database -inputfile "$queriespath/compare_quantity.sql"
$changes = $info.length
for($i=0; $i-le$changes; $i++) {
    $text = "Revise,$info[$i].quantity,$info[$i].itemid" | Set-Content      'C:UserspmahoDropboxSAMPOWERSPORTSCustomChromerevision.txt'
}

我正在尝试将$info[$I].guosity、$info[$si].itemid的值写入文件。

这就是我的代码现在输出的内容修订,System.Data.DataRow System.Data.DataRow[2].数量,System.Data_DataRow System.Data.DataRow[2].itemid

我想说的是变量的实际值,我该怎么做?

编辑:

for($i=0; $i-le$changes; $i++) {
$text = $($info[$i].quantity) | Set-Content 'C:UserspmahoDropboxSAMPOWERSPORTSCustomChromerevision.txt'
}

上面没有打印任何内容。

for($i=0; $i-le$changes; $i++) {
    $text = "$(Revise,$info[$i].quantity,$info[$i].itemid)" | Set-Content      'C:UserspmahoDropboxSAMPOWERSPORTSCustomChromerevision.txt'
}

$((只是告诉powershell解释括号中包含的表达式,您仍然需要引号来为变量分配字符串值。

您在这里遇到了字符串扩展的问题。

以这个属性为例:

$e = [psobject]@{Name='StackOverFlow';URL='http://stackoverflow.com'}
$e.URL
> http://stackoverflow.com

这正如预期的那样。然而,当我试图用引号来包装整个事情时,看看会发生什么:

"the URL of StackOverflow is $e.Url"
>the URL of StackOverflow is System.Collections.Hashtable.Url

注意到末尾附加的蹩脚的.Url了吗?PowerShell正在为我进行字符串扩展,但它通过从左到右扫描并为我们插入变量值来实现这一点,但它不会检查我是否真的在使用属性或方法名。它只是认为I see $e, let me replace it with what I've got for $e。烦人的

因此,解决这一问题的简单方法是使用操作顺序符号(请记住,对不起,亲爱的Sally阿姨?圆括号、指数、乘法、除法、加法、减法(,并将属性引用括在括号中。

在我的例子中,我会这样做。

"the URL of StackOverflow is $($e.Url)"
> the URL of StackOverflow is http://stackoverflow.com

回到你的问题,试试这个:

"Revise,$($info[$i].quantity),$($info[$i].itemid)" |
     Set-Content 'C:UserspmahoDropboxSAMPOWERSPORTSCustomChromerevision.txt'

相关内容

  • 没有找到相关文章

最新更新