2014-11-21 2 views
0

Я новичок в powershell. Я пытаюсь написать простую процедуру, и она терпит неудачу. Код и сообщение об ошибке приведены ниже. Я попробовал несколько комбинаций. Что я делаю не так?Powershell Создание экземпляра класса с аргументами

$fileContent = Get-Content "ExePaths.txt" 
foreach ($file in $fileContent) 
{ 
    if($file.Contains("Executable")) 
     { 
      $path = $file.Replace("""Executable""=","") 
      $path = $path.Replace("\\","\") 
      echo $path 
      $fileInfoData = New-Object -TypeName System.IO.FileInfo -fileName $path 
      echo $fileInfoData.FullName 
      break; 

      ##echo $fileInfoData.FullName 
     } 
} 

Сообщение об ошибке

New-Object : A parameter cannot be found that matches parameter name 'fileName'. 
At C:\Users\siluvaie\Desktop\Docs\Barcap\Projects\FV8\reg from prod servers\ReadFile.ps1:9 char:69 
+    $fileInfoData = New-Object -TypeName System.IO.FileInfo -fileName <<<< $path 
    + CategoryInfo   : InvalidArgument: (:) [New-Object], ParameterBindingException 
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand 

ответ

0

Используйте параметр СписокАргументов:

$fileInfoData = New-Object -TypeName System.IO.FileInfo -ArgumentList $path 
+0

Я пытался. Это не работает для меня. Ты уверен? – Hunter

+0

до тех пор, пока $ Path содержит допустимый путь, который должен работать. Пробовал это здесь в моем конце, и он работал так, как должен. – ojk

0

Вы должны использовать Constructer, как вы бы в .NET. В вашем примере вы передаете параметр -fileName командлету New-Object, а не классу FileInfo.

$fileInfoData = New-Object -TypeName System.IO.FileInfo($path) 
0

Я хотел бы использовать Get-Item Вместо System.IO.FileInfo

$fileInfoData = Get-Item $path 

Тогда

$fileInfoData.FullName 
Смежные вопросы