gpt4 book ai didi

powershell - 有没有办法回显Powershell命令行?

转载 作者:行者123 更新时间:2023-12-03 01:30:12 26 4
gpt4 key购买 nike

我正在构建几个Powershell脚本,我想在其中执行的一件事是在输出的顶部吐出一行,以回显所使用的命令行。

用例是:将输出重定向到文件,并且从现在开始一年后,当有人检查该文件时,我希望他们能够从输出文件中复制/粘贴命令以重新生成相同的输出,唯一的区别是按时间顺序。 [好吧,这有点太笼统了……第一种情况:我正在检查ACL,并且希望将来能够通过简单地复制/粘贴同一命令来对较新的数据重复相同的检查。 ]

我的脚本从参数定义开始:

[CmdletBinding()]
Param(
[string] $filter="Name -like '*'",
[string] $user=$null,
[switch] $test01=$false,
[switch] $test02=$false
)

我现在正在做的是一个后备职位,知道哪些参数可以接受,我将这些参数的名称和值转储出去:
if ($user.Length -eq 0) { $u = "NULL" } else { $u = "|$user|" }
if ($test01) { $u += ", -TEST01" }
if ($test02) { $u += ", -TEST02" }
"RUN BEGINS at $((get-date).ToString('F')) -- Filter is |$filter|, User is $u"

难看,骇人听闻,甚至没有暗示可移植性,而且绝对不是命令的复制/粘贴。

无论如何,都可以将其改成命令行。但不是一般性的,也不是100%保证的。

我尝试使用$ args,但是显然,定义命名参数或CmdletBinding()都会破坏该机制,因为它始终为空。尝试了$ PsBoundParameters,Get-History甚至$ 0 .. $ 9类似bash的变量。到目前为止,我找不到能启动正在运行的脚本的命令行的任何内容。

$ PsBoundParameters很接近,它具有所有正确的数据作为键,值对,可以在命令行中建立。但它仍然不是命令行,需要进行重组才能将其合并为一个命令行。

Get-History包括一个完整的命令行,因此更加接近。问题是它使命令在启动脚本的命令之前运行,而不是启动脚本的命令。

用完了所有选项...但是我很乐意提出建议。

最佳答案

找到了!这就像我希望的那样简单。 [使用...发现这很痛苦]
$MyInvocation.Line

关于powershell - 有没有办法回显Powershell命令行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58985746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com