Je veux être en mesure d'obtenir la partie argument de la commande précédente. $^
semble retourner juste la commande et non les args. Get-History -count 1
renvoie la dernière commande complète, y compris la commande et les arguments. Je pourrais juste .Remplacer la première instance, mais je ne suis pas sûr si c'est correct. Le scénario est que parfois je veux faire quelque chose comme ça. Supposons que * $ sont de args à la dernière commande:Obtenir les arguments de la dernière commande invoquée dans PowerShell?
dir \\share\files\myfile.exe
copy $* c:\windows\system32
Toute idée comment obtenir correctement les derniers args?
MISE À JOUR: terminé ma méthode pour ce faire.
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
}
Maintenant, je peux faire:
dir \\share\files\myfile.exe
copy (Get-LastArgs) c:\windows\system32
Pour réduire la dactylographie, je l'ai fait
set-alias $* Get-LastArgs
maintenant je dois encore faire
copy ($*) c:\windows\system32
si quelqu'un a des idées pour faire cela mieux s'il vous plaît faites le moi savoir.
+ 1 question intéressante. Si vous n'obtenez pas une réponse satisfaisante à partir de cela, envisagez de suggérer une telle fonctionnalité sur connect.microsoft.com/powershell – x0n
avec PSReadLine, Alt +. arrache le dernier argument. Si vous le précedez avec un argument numérique, il l'arrache. Donc Alt + 0 Alt +. va tirer le premier argument – IttayD