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

出力例:

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

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

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

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
  }
}

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

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