get()
当我执行GetChildItem "C:\foo\bar" -Recurse -File | where { $_.Name -notmatch '[a-zA-Z_0-9^0-9]*(.pl|.xap|.go|.zip|.py|.tar|.gz|.tgz)' } | Compress-Archive -DestinationPath "C:\archive\xyz.zip"
命令而没有输出重定向时,该命令恰好返回了我所需要的。但是,当我将输出重定向到GetChildItem
时,此cmdlet不会保留Compress-Archive
的目录结构(所有文件都存储在根目录中),并且在{{1}时不包括所有文件}命令是独立执行的。
将感谢您的任何投入。我通常会使用unix shell命令,但是我受到环境的限制。
更新(3/4/19):
\bar
删除-File开关/参数可解决文件夹结构问题,但不再忽略在GetChildItem
开关中要忽略的文件。给出以下示例:
GetChildItem "C:\foo\bar" -Recurse | where { $_.Name -notmatch '[a-zA-Z_0-9^0-9]*(.pl|.xap|.go|.zip|.py|.tar|.gz|.tgz)' } | Compress-Archive -DestinationPath "C:\archive\xyz.zip"
此命令将产生以下输出:
-notmatch
在这种情况下,.zip,.zip和.pl文件包含在.zip
中