我想在PowerShell中联合运行这两个命令,并使用dir的输出作为Get-ChildItem中的路径第一个月我能得到一些关于这是如何可能的见解吗?(上下文:我正在搜索特定的文件,如果找到了,我想知道它们的属性)
ruyhziif1#
powershell.exe
Get-ChildItem
cmd.exe
dir
Get-ChildItem -Recurse -Force -LiteralPath ( cmd /c dir /b /s /a screenshot_37.png ) | Select FullName, Attributes
字符串
/c
/r
/t
/b
Get-ChildItem -Recurse -Force -Filter screenshot_37.png | Select FullName, Attributes
型
0aydgbwb2#
要实现您的目的,只需捕获dir命令的输出并将其存储在variable中。然后,在Get-ChildItem中使用该变量。类似于:
variable
$dirOutput = cmd /r dir /b/s/a/t screenshot_37.png powershell -command "& {Get-ChildItem $dirOutput -RF}"
**注意:**如果$dirOutput包含多个路径,它们将作为单独的位置参数传递,这将破坏Get-ChildItem语法。另一种方式:
$dirOutput
您也可以直接使用Get-ChildItem来搜索特定文件并获取其属性。
$file = "screenshot_37.png" $items = Get-ChildItem -Filter $file -RF $items | Format-List *
dz6r00yl3#
非常感谢@mandy8055!以下内容已成功运行:$dirOutput = cmd /r dir /b/s/a/t screenshot_37.png; powershell -command "& {Get-ChildItem $dirOutput -Recurse -Force}"
$dirOutput = cmd /r dir /b/s/a/t screenshot_37.png; powershell -command "& {Get-ChildItem $dirOutput -Recurse -Force}"
3条答案
按热度按时间ruyhziif1#
powershell.exe
来运行Get-ChildItem
:只需直接调用后者,这避免了创建PowerShell * 子进程 * 的代价。cmd.exe
的dir
命令解决这个问题(请参阅下一点如何避免),你需要:字符串
/c
与cmd.exe
一起使用(/r
是一个很少见到的别名,存在它是为了向后兼容),并且我已经删除了dir
的/t
选项,由于使用/b
,该选项没有任何影响。Get-ChildItem
调用就足够了--不需要cmd.exe
的内部dir
命令:型
0aydgbwb2#
要实现您的目的,只需捕获
dir
命令的输出并将其存储在variable
中。然后,在Get-ChildItem
中使用该变量。类似于:字符串
**注意:**如果
$dirOutput
包含多个路径,它们将作为单独的位置参数传递,这将破坏Get-ChildItem
语法。另一种方式:
您也可以直接使用
Get-ChildItem
来搜索特定文件并获取其属性。型
dz6r00yl3#
非常感谢@mandy8055!以下内容已成功运行:
$dirOutput = cmd /r dir /b/s/a/t screenshot_37.png; powershell -command "& {Get-ChildItem $dirOutput -Recurse -Force}"