Quiero ser capaz de obtener la parte del argumento del comando anterior. $^
parece devolver solo el comando y no los argumentos. Get-History -count 1
devuelve el último comando completo que incluye el comando y los argumentos. Podría simplemente. Reemplazar la primera instancia, pero no estoy seguro de si es correcta.Obteniendo los argumentos del último comando invocado en powershell?
El escenario es que a veces quiero hacer algo como esto. Vamos a suponer que $ * son los argumentos a la última orden:
dir \\share\files\myfile.exe
copy $* c:\windows\system32
Alguna idea de cómo conseguir los últimos argumentos correctamente?
ACTUALIZACIÓN: finalizado mi método para hacer esto.
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
}
Ahora sólo se puede hacer:
dir \\share\files\myfile.exe
copy (Get-LastArgs) c:\windows\system32
Para reducir escribir, lo hice
set-alias $* Get-LastArgs
por lo que ahora todavía tengo que hacer
copy ($*) c:\windows\system32
si alguien tiene cualquier idea para mejorar esto, por favor avíseme.
+1 pregunta interesante. Si no obtiene una respuesta satisfactoria de esto, considere la sugerencia de tal característica en connect.microsoft.com/powershell – x0n
con PSReadLine, Alt +. tira el último argumento. Si lo antecesas con un argumento digital, lo tira. Entonces Alt + 0 Alt +. jalaré el primer argumento – IttayD