Модуль PSReadLine может быть вставлен в буфер, например,
[Microsoft.PowerShell.PSConsoleReadLine]::Insert("foo bar")
Однако, поскольку это предназначено для редактирования буфера текущей строки, а не следующей строки, вам понадобится сделать что-то вроде этого
#pipeline to variable $myBuffer function
function Write-PromptBuffer {
param (
[parameter(ValueFromPipeline, ValueFromRemainingArguments = $true)]
$global:myBuffer
)
}
#Add a PSReadLineKeyHandler to insert $myBuffer
Set-PSReadLineKeyHandler -Key Alt+x `
-ScriptBlock {
param($key, $arg) # The arguments are ignored in this example
#write to buffer
[Microsoft.PowerShell.PSConsoleReadLine]::Insert($myBuffer)
}
Теперь заполните $ myBuffer строкой и назовите ее Alt + w
PS C:\> echo "foo bar" | Write-PromptBuffer
PS C:\> foo bar
В качестве альтернативы и не очень, вы можете использовать SendKeys
function Write-PromptBuffer {
param (
[parameter(ValueFromPipeline, ValueFromRemainingArguments = $true)]
$myBuffer
)
(new-object -com wscript.shell).SendKeys($myBuffer)
}
Надеюсь, это помогает,