powershell - 如何在管道 cmdlet 中获取前一个的名称?
问题描述
如何在管道 cmdlet 中获取前一个的名称?例如:
gci myDir\*.ps1 | % { $prevCmdletName = ...?... }
resolve-Path myDir\*.ps1 | % { $prevCmdletName = ...?... }
gci myDir\*.ps1 | ? { $_.fullname -match 'tests' } | % { $prevCmdletName = ...?... }
test1.ps1, test2.ps1 | % { $prevCmdletName = ...?... }
是否有一个通用代码来确定管道 cmdlet 中的前一个?有没有这样功能的模块?
谢谢。
解决方案
你可能追求的是成绩单start-transcript filepath\filename
。这实际上取决于所需的最终结果是什么,但是脚本会向您指示正在执行的命令以及这些命令正在执行的操作。
如果您希望您的代码在运行时告诉您正在运行什么命令,那么这是一个看似奇怪的要求 - 但是可以完成。
gci c:\ | % {(Get-PSCallStack).Position.StartScriptPosition.GetFullScript()}
这样做会掩盖您的输出,但您可以将其添加为输出之一。创造性地使用它来确定管道中精确的先前参数,可以通过获取该字符串输出并将其按管道字符拆分来完成。无论您想要哪种输出,您都需要通过计算您所追求的拆分列表中的哪个项目来将其封装在脚本块中。作为管道的一部分在一条线上执行所有这些操作将产生不希望的结果。
推荐阅读
- python - 通过等效调用将 C# SerialPort 应用程序移植到 Python 和 PySerial
- c++ - 将函数作为未知类型的类模板参数传递
- javascript - 使用 javascript 覆盖 css 文件的“on the fly” css 规则选择器
- c - 如何在C中将这些十六进制值转换为十进制
- sql-server - 插入到带有特定列值的选择中
所以我想知道是否有这样的事情:
insert into Table_History select *, CreationUser=getUser() from deleted;
我只覆盖/设置星号一列的值,而不必写出所有列并将 CreationUser 替换为 getUser()。
我不想把每一列都写成这样:
insert into Ta
- python - Python3 中间人:将套接字绑定到任何 IP
- reactjs - 如何删除“React Hook useEffect has missing dependencies”警告
- javascript - Moment js在添加天数时得到错误的时间
- python - Python,如何在括号之间有字符串时删除数据框列中的括号
- c# - 将字符串添加到 htmlstring