У меня есть скрипт с циклом foreach над массивом, и он должен использовать строку с текущим объектом в нем.Но строка не расширяется должным образом.
$Patterns = ("An", "array", "of", "strings")
$Template = "The current item is $_"
$Patterns | foreach { Does-Something $Template }
Выходные данные типа «что-то делает» просто помещают строку шаблона в переменную, но не вставляют ее.Это работает, если я использую оператор foreach и явное имя переменной.Что мне нужно изменить, чтобы сделать эту работу?
РЕДАКТИРОВАТЬ:
Хорошо, у меня была ошибка в понимании, и я упустил что-то важное, поэтому позвольте мне опубликовать фактический код, который яusing:
$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 }
Таким образом, проблема в том, что я по глупости включил $_
в хеш-таблицу выражения, которая передается в формат-таблицу, но для формата-таблицы нужно само выражение $_
.Поэтому я не могу получить доступ к внешней области видимости с нужной мне строкой.
Теперь, есть ли способ обойти это?