powershell - Powershell 脚本和管道
问题描述
我想知道这个命令是否可以在没有管道(垂直线)的情况下编写?
$u=gwmi Win32_Volume|?{$_.Label -eq'_'}|select name;cd $u.name;.\d.cmd
解决方案
因此,在开始时,您应该始终尝试将过滤器向左移动,因此如果有问题的 cmdlet 具有过滤功能,请尝试使用它。在这种情况下,它将为您节省 | Where-对象。
$Vols = gwmi -Query "SELECT Name FROM Win32_Volume WHERE Label = '_'"
在这一点上我认为你的状态很好,但是后续的命令:
cd $Vols.name
.\d.cmd
如果 $Vols 返回多个对象,这些可能不起作用。
我不知道真正的意图是什么,但严格来说,您仍然可以通过以下方式避免管道:
ForEach($Vol in $Vols){
cd $Vol.name
.\d.cmd
}
这就是我将 $u 更改为 $Vols 的原因...
如果您只想使用 name 属性,您可以关注自动变量展开,例如:
$Vols = (gwmi -Query "SELECT Name FROM Win32_Volume WHERE Label ='_'" ).Name
ForEach($Vol in $Vols){
cd $Vol
.\d.cmd
}
让我知道您认为我们可以进一步开展工作。
推荐阅读
- spring - Spring批处理远程分区:分区期间在kafka中推送大量数据
- java - 我的 android java 应用程序在外部存储中看不到任何 .xml 文件
- java - POI XSSF覆盖excel文件中的特定单元格
- python - 尝试使用带有 URL 的 Microsoft 计算机视觉图像分析并不断收到“TypeError:字符串格式化期间并非所有参数都转换”
- python - 创建for循环以删除嵌套列表中的元素
- runtime-error - RuntimeError:尝试使用已关闭的会话。(新培训)
- java - PAdES 签名级别 - Adobe Acrobat
- c# - 如何根据打开的邮件显示/隐藏 Outlook 功能区 (VSTO)?
- html - 一个 div 中的照片被另一个 div 移动
- typescript - 如何使用键盘输入平滑地更新成帧器运动位置?