Я хочу иметь возможность получить часть аргумента предыдущей команды. $^
, кажется, возвращает только команду, а не аргументы. 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
если у кого-нибудь есть идеи как это улучшить, пожалуйста, дайте мне знать.