Переменная $ _, используемая в функции из модуля, пуста (PowerShell)

Один вопрос к вам;)

У меня есть эта функция:

function Set-DbFile {
    param(
        [Parameter(ValueFromPipeline=$true)]
        [System.IO.FileInfo[]]
        $InputObject,
        [Parameter(ValueFromPipelineByPropertyName=$true)]
        [scriptblock]
        $Properties
    )
    process {
        $InputObject | % { 
            Write-Host `nInside. Storing $_.Name
            $props = & $Properties
            Write-Host '  properties for the file are: ' -nonew
            write-Host ($props.GetEnumerator()| %{"{0}-{1}" -f $_.key,$_.Value})
        }
    }
}

Посмотрите на $ Свойства . Он должен быть оценен для каждого файла, а затем файл и его свойства должны быть обработаны дальше.

Примером его использования может быть:

Get-ChildItem c:\windows |
    ? { !$_.PsIsContainer } |
    Set-DbFile -prop { 
        Write-Host Creating properties for $_.FullName
        @{Name=$_.Name } # any other properties based on the file
    }

Когда я копирую и вставляю функцию Set-dbFile для команды строки и запуска фрагмента примера, все в порядке.

Однако, когда я сохраняю функцию в модуле, импортирую ее и запускаю пример, переменная $ _ пуста. Кто-нибудь знает почему? И как это решить? (приветствуются и другие решения)


Результаты для функции, определенной в скрипте / введенной в командной строке:

Inside. Storing adsvw.ini
Creating properties for C:\windows\adsvw.ini
  properties for the file are: Name-adsvw.ini

Inside. Storing ARJ.PIF
Creating properties for C:\windows\ARJ.PIF
  properties for the file are: Name-ARJ.PIF
....

Результаты для функции, определенной в модуле:

Inside. Storing adsvw.ini
Creating properties for
  properties for the file are: Name-

Inside. Storing ARJ.PIF
Creating properties for
  properties for the file are: Name- 
....
13
задан stej 7 June 2011 в 11:15
поделиться