В ответ на этот вопрос, оригинальный запросчик хотел знать
Есть ли способ в PowerShell после ввода длинной или сложной команды зафиксировать эту команду в буфере истории, но не выполнить ее?
Мое решение, однако, было чисто для развлечения, но я удивлялся, как / почему оно работает на бэкэнде.
Ответ
$VariableName = "Windows Command"
Затем выполнить:
Invoke-Expression "$VariableName"
Пример с Ping:
Я также смог использовать выражения PowerShell точно таким же образом:
PS H:> $ Outlooks = "Get-Process -Name Outlook -Verbose | fl StartTime, Threads"
PS H:> Invoke-Expression "$ Outlookks"
Моя теория
По сути, я считаю, что происходит то, что мы создаем строку для первой переменной (именно так, как она выглядит, прямо), а затем, когда мы вызываем нашу переменную внутри "", это заставляет интерпретатор расширять переменную, вызывая ее чтобы вызвать правильную команду.
Мое понимание того, как это работает точно? Рекомендации предпочтительнее.