簡體   English   中英

傳遞函數的路徑使Get-ChildItem返回更多文件

[英]Passing path to function makes Get-ChildItem return more files

我有一個簡單的命令,其中列出了腳本文件夾中的所有文件

$files = Get-ChildItem -Path $PSScriptRoot
foreach ($file in $files)
{
    Write-Host $file
}

它給了我以下輸出:

PS C:\Users\ivu> D:\jenkins\workspace\DeploymentInstaller\usemod.ps1
functions.psm1
installClient.ps1
installClientParams.ps1
usemod.ps1

問題:現在,我無法解釋的行為發生了,當我通過函數包裝代碼時,過濾器Get-ChildItem突然返回了更多文件。
有人可以解釋這種行為嗎?

Function funct($path, $regex){
    Write-Host $path
    Write-Host $regex

    $files = Get-ChildItem -Path $path -Filter $regex
    foreach ($file in $files)
    {
        Write-Host $file
    }
}
funct($PSScriptRoot, "*")

產量

PS C:\Users\ivu> D:\jenkins\workspace\DeploymentInstaller\usemod.ps1
functions.psm1
installClient.ps1
installClientParams.ps1
usemod.ps1
C:\Users\ivu\.dbvis
C:\Users\ivu\.eclipse
C:\Users\ivu\.squirrel-sql
C:\Users\ivu\.swt
C:\Users\ivu\Citrix
C:\Users\ivu\Contacts
C:\Users\ivu\Desktop
C:\Users\ivu\Documents
C:\Users\ivu\Downloads
C:\Users\ivu\faab
C:\Users\ivu\Favorites
C:\Users\ivu\Links
C:\Users\ivu\Music
C:\Users\ivu\Pictures
C:\Users\ivu\Saved Games
C:\Users\ivu\Searches
C:\Users\ivu\Tracing
C:\Users\ivu\transfer
C:\Users\ivu\Videos
C:\Users\ivu\workspace
C:\Users\ivu\.jboss-cli-history
C:\Users\ivu\bla.txt
C:\Users\ivu\Icc.state

您錯誤地調用了該函數。 通過在參數中使用逗號,您實際上最終傳遞了一個數組,因此您基本上是在說:

Get-ChildItem D:\jenkins\workspace\DeploymentInstaller
Get-ChildItem C:\Users\ivu

如果您按以下方式致電,您將獲得預期的結果:

funct $PSScriptRoot "*"

我說“預期結果” ,因為它將在以下位置列出文件

D:\\jenkins\\workspace\\DeploymentInstaller

因為您要調用的腳本在該目錄中,因此$PSScriptRoot將包含該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM