aki*_*lin 4 clipboard powershell
我正在尝试创建一个 powershell 代码段,它将多行管道输入的第一列复制到剪贴板。
预期用途是:kubectl get pods | copyfirst。
这应该允许我在剪贴板中拥有所有 pod 名称,并使用 Win+V 选择我需要的单个 pod 名称。
到目前为止我所拥有的是:
function copyfirst {
[CmdletBinding()]Param([Parameter(ValueFromPipeline)]$Param)
process {
$Param.Split(" ")[0] | Set-Clipboard
}
}
Run Code Online (Sandbox Code Playgroud)
问题是 - 这只会将最后一个条目复制到剪贴板,而所有其他条目都被忽略。
如果我更改Set-Clipboard为其他命令 - 它会按预期工作。例如echo输出所有 pod 名称,而不仅仅是最后一个。
我认为mklement0 的答案是正确的答案,我认为我们没有人知道 Win+V 剪贴板功能,或者至少我没有。所以,你是对的,就像你之前所说的那样快速连续完成时,它似乎无法捕捉历史。
所以只需添加Start-Sleep它就可以正常工作:
function copyfirst {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline)]
[array]$Param
)
process {
$Param.Split(" ")[0] | Set-Clipboard
Start-Sleep -Milliseconds 250
}
}
@'
string1 string4
string2 string5
string3 string6
'@ -split '\r?\n' | copyfirst
Run Code Online (Sandbox Code Playgroud)
它应该捕获string1,string2和string3。
调整睡眠计时器,直到它不太慢并且可以捕获所有内容。
经过一些测试,似乎Start-Sleep可以减少到-Milliseconds 250,低于会产生不一致的结果。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |