35453


PowerShell 5でdot-filesというディレクトリー以下にあるファイルを処理するスクリプトを書いていたのですが、ForEach-
Objectを呼ぶところで下記のようなエラーが発生してしまいます。

出力例:

[code]

    PS C:\Users\igrep\dot-files> .\install.ps1
    .bundle
    ForEach-Object : 引数 '.bundle' を受け入れる位置指定パラメーターが見つかりません。
    発生場所 C:\Users\igrep\dot-files\install.ps1:20 文字:47
    + Get-ChildItem "$wd/dot-files/" -Filter '.*' | ForEach-Object {
    +                                               ~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [ForEach-Object]、ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.ForEachObjectCommand
    
[/code]

※追記: 出力結果に「.bundle」と含まれているのは、問題のdot-
filesディレクトリーに、.bundleというファイルが含まれているからのようです。

どうも構文が意図しない解釈のされ方をされているみたいなのですが、どのようにして直せばいいか教えていただけないでしょうか？  
以下が問題のスクリプト（抜粋）です。

[code]

    Get-ChildItem "C:\Users\igrep\dot-files\dot-files\" -Filter '.*' | ForEach-Object {
      $path = $_.Name
      echo $path
    
      if (Test-Path -Path $homeDir/[System.IO.Path]::GetDirectoryName($path)) {
        echo WARNING: $path already exists!
      } else {
        echo aaa
      }
    }
    
[/code]

以下がPowerShellのバージョン情報です。

[code]

    Name                           Value
    ----                           -----
    PSVersion                      5.1.15063.296
    PSEdition                      Desktop
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
    BuildVersion                   10.0.15063.296
    CLRVersion                     4.0.30319.42000
    WSManStackVersion              3.0
    PSRemotingProtocolVersion      2.3
    SerializationVersion           1.1.0.1
    
[/code]


CC BY-SA 3.0
2017-06-10T03:38:01.263
35451
2017-06-10T03:47:18.643
8007
question
powershell
PowerShell ForEach-Object : 引数 '' を受け入れる位置指定パラメーターが見つかりません。

[code]

    Get-ChildItem "C:\Users\igrep\dot-files\dot-files\" -Filter '.*' | ForEach-Object {
      $path = $_.Name
      echo $path
    
      if (Test-Path -Path "$homeDir/$([System.IO.Path]::GetDirectoryName($path))") {
        echo WARNING: $path already exists!
      } else {
        echo aaa
      }
    }
    
[/code]

とか。


CC BY-SA 3.0
2017-06-10T03:47:18.643
35453
2017-06-10T03:47:18.643
3033
35451
answer