PowerShell不使用通配符返回当前目录中的项目

时间:2018-01-05 14:27:56

标签: powershell

我正在尝试创建一个PowerShell脚本来自动创建Nuget包并将其上传到本地Nuget源,但是我遇到了一些我不理解的PowerShell问题。

第一步是使用此命令创建所有包装:

Get-ChildItem -Include *.nuspec -Recurse | Foreach {nuget pack $_.fullname}

这将进入每个项目目录并递归查找.nuspec文件,并为每个文件构建.nupkg文件,并将其放在解决方案目录中。在本例中为“MultiPack.Client.1.0.0.nupkg”,“MultiPack.Common.1.0.0.nupkg”和“MultiPack.Server.1.0.0.nupkg”。它似乎工作得很好。

Directory listing

下一步是在每个文件上运行nuget add fileName.nupkg -Source "c:\localNuget"。我将上一个命令修改为:

Get-ChildItem -Include *.nupkg | Foreach {nuget add $_.fullname -Source c:\localNuget}

但它似乎没有用。做一些调试,我发现即使文件肯定存在,Get-ChildItem -Include *.nupkg也不会产生任何结果。如果我使用-Recurse,它可以工作,但我真的不想这样做,因为.nupkg文件将始终位于当前目录中。

为什么不使用通配符查找我的文件,如何在没有-Recurse标志的情况下更改脚本?

1 个答案:

答案 0 :(得分:2)

如Tomalak所述

  

尝试-Filter而不是-Include

原因:

你需要一个“-Recurse”才能使用Include

  

-Include参数仅在命令包含时有效   -Recurse参数或路径指向目录的内容,例如C:\ Windows *,其中“*”通配符指定   C:\ Windows目录的内容。