PowerShell:外部命令输出到内部命令

vxqlmq5t  于 11个月前  发布在  Shell
关注(0)|答案(3)|浏览(162)

我想在PowerShell中联合运行这两个命令,并使用dir的输出作为Get-ChildItem中的路径
第一个月
我能得到一些关于这是如何可能的见解吗?
(上下文:我正在搜索特定的文件,如果找到了,我想知道它们的属性)

ruyhziif

ruyhziif1#

  • 如果你从PowerShell调用它,你不需要调用powershell.exe来运行Get-ChildItem:只需直接调用后者,这避免了创建PowerShell * 子进程 * 的代价。
  • 如果你想通过cmd.exedir命令解决这个问题(请参阅下一点如何避免),你需要:
Get-ChildItem -Recurse -Force -LiteralPath (
  cmd /c dir /b /s /a screenshot_37.png
) | Select FullName, Attributes

字符串

  • 请注意,我将/ccmd.exe一起使用(/r是一个很少见到的别名,存在它是为了向后兼容),并且我已经删除了dir/t选项,由于使用/b,该选项没有任何影响。
  • 更基本的是,一个Get-ChildItem调用就足够了--不需要cmd.exe的内部dir命令:
Get-ChildItem -Recurse -Force -Filter screenshot_37.png |
  Select FullName, Attributes

0aydgbwb

0aydgbwb2#

要实现您的目的,只需捕获dir命令的输出并将其存储在variable中。然后,在Get-ChildItem中使用该变量。类似于:

$dirOutput = cmd /r dir /b/s/a/t screenshot_37.png
powershell -command "& {Get-ChildItem $dirOutput -RF}"

字符串

**注意:**如果$dirOutput包含多个路径,它们将作为单独的位置参数传递,这将破坏Get-ChildItem语法。
另一种方式:

您也可以直接使用Get-ChildItem来搜索特定文件并获取其属性。

$file = "screenshot_37.png"
$items = Get-ChildItem -Filter $file -RF
$items | Format-List *

dz6r00yl

dz6r00yl3#

非常感谢@mandy8055!以下内容已成功运行:$dirOutput = cmd /r dir /b/s/a/t screenshot_37.png; powershell -command "& {Get-ChildItem $dirOutput -Recurse -Force}"

相关问题