我有一个foreach循环遍历数组的脚本,它应该使用包含当前对象的字符串。但是字符串没有正确扩展。
$Patterns = ("An", "array", "of", "strings")
$Template = "The current item is $_"
$Patterns | foreach { Does-Something $Template }
do-something的输出只是将模板字符串放到变量中,但不插入它。如果我使用foreach语句和显式变量名称,这将起作用。我需要改变以做出这项工作?
编辑:
好吧,我理解了一个错误,而忽略了一些重要的东西,所以让我文章中,我使用的实际代码:
$OutFile = "C:\Searched.txt"
$Path = "C:\Dev\Folder\To\Search"
$Patterns = ("Big", "Array", "of", "things", "to", "search")
$exp = @{Expression={$_.FileName};Label="File Name"}, `
@{Expression={$_.LineNumber};Label="Line #"}, `
@{Expression={$_.Path.Substring($Path.Length)};Label="Path ($Path)"}, `
@{Expression={$_.Line.Trim()};Label="Line ($_)"}
$Patterns | foreach {
get-childitem ($Path + "*") -include *.cs -recurse `
| select-string -pattern ($_ + "TableAdapter") `
| format-table $exp -AutoSize }
所以,问题是,我愚蠢地将$_
嵌入到表达式散列表中,该散列表正在传递到格式表中,但format-table需要$_
表达式本身。所以我实际上不能用我需要的字符串访问外部作用域。
现在有没有办法解决这个问题?
,哦,那向我透露什么实际发生在这里,我错过了什么。去更新这个问题。 – CodexArcanum 2011-01-06 19:05:50