gpt4 book ai didi

powershell - 获取Powershell中最后调用的命令的参数?

转载 作者:行者123 更新时间:2023-12-02 22:10:04 25 4
gpt4 key购买 nike

我希望能够获得上一个命令的参数部分。 $^似乎仅返回命令,而不返回args。 Get-History -count 1返回最后一个完整的命令,包括命令和参数。我可以只替换第一个实例,但是我不确定它是否正确。

场景是有时我想做这样的事情。假设$ *是最后一个命令的参数:

dir \\share\files\myfile.exe
copy $* c:\windows\system32

任何想法如何正确获取最后一个参数?

更新:完成了我的方法。
function Get-LastArgs
{
$lastHistory = (Get-History -count 1)
$lastCommand = $lastHistory.CommandLine
$errors = [System.Management.Automation.PSParseError[]] @()

[System.Management.Automation.PsParser]::Tokenize($lastCommand, [ref] $errors) | ? {$_.type -eq "commandargument"} | select -last 1 -expand content
}

现在我可以做:
dir \\share\files\myfile.exe
copy (Get-LastArgs) c:\windows\system32

为了减少打字,我做了
set-alias $* Get-LastArgs

所以现在我仍然要做
copy ($*) c:\windows\system32

如果有人有任何更好的想法,请告诉我。

最佳答案

没有解析历史记录本身本身,没有简单的方法来以这种方式获取最后一个args,这不是小事。原因是,在将splatting,管道,嵌套的子表达式,命名的和未命名的参数/参数带入方程式之后,“最后的参数”可能与您认为的不一样。在powershell v2中,有一个可用于标记命令和表达式的解析器,但是我不确定您是否想走那条路线。

ps> $psparser::Tokenize("dir foo", [ref]$null) | ? {
$_.type -eq "commandargument" } | select -last 1 -expand content
foo

关于powershell - 获取Powershell中最后调用的命令的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167781/

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