在编写PowerShell代码时,你可能最后会考虑到的是
Windows剪贴板。我们可能都知道通过GUI使用Ctrl-C和Ctrl-V的快捷键来复制和粘贴剪贴板中的内容,但在PowerShell脚本中,这不太有用。然而,你知道吗,PowerShell提供了复制到剪贴板的功能?
在本文中,我将介绍我们在PowerShell中如何获取复制和粘贴功能,然后向你介绍PowerShell在5版本中提供的命令。
在PowerShell v5之前,复制到剪贴板的唯一方法是使用clip.exe应用程序。
老派的clip.exe
这个应用程序已经存在很长时间了,而且工作得很好。通过将文本传递给clip.exe,你可以将文本复制到剪贴板。这样做是有效的,但每次输入后它总是添加一个换行符,这总是令人烦恼。

不仅如此,我们也没有简单的方法来从剪贴板中获取信息。一旦内容在剪贴板中,我们被迫手动粘贴内容。但使用原生的剪贴板命令,这个问题不再存在了!
现在我们有两个解决这个问题更好的命令: Get-Clipboard
和 Set-Clipboard
。
Set-Clipboard PowerShell命令
Set-Clipboard
替换了 clip.exe 但行为完全相同。现在,不再需要将输出导向 clip,您可以使用 Set-Clipboard
。如果这样做,您会注意到在粘贴内容时尾随的回车已经消失了。
剪贴板现在只包含字符串 Hello。
Set-Clipboard
的另一个有用功能是 Append
参数。传统上,剪贴板只能存储一个项目。现在,通过使用 Set-Clipboard
的 Append
参数,您可以添加无限数量的项目而不会删除之前的项目。
Get-Clipboard 参数
即使您不使用 Set-Clipboard
将内容复制到剪贴板,您仍然可以使用 Get-Clipboard
来了解一些不同于简单字符串的类型。例如,如果您从 文件资源管理器 复制了文件列表,并希望将此列表放入 PowerShell 控制台,只需使用 Get-Clipboard
的 Format
参数和 �FileDropList
值。
您可以看到它理解剪贴板中的数据类型是文件列表。此外,您也可以对图像和其他实体执行相同的操作。
复制另一个应用程序中的图像,并使用-Format Image
提供Get-Clipboard
来检索有关图像的各种属性。
在PowerShell Core中操作剪贴板
不幸的是,PowerShell Core(v6+)中没有Get-Clipboard
和Set-Clipboard
命令,但您仍可以使用WindowsCompatibility模块来使用它们。WindowsCompatibility模块允许您在PowerShell Core中使用Windows PowerShell cmdlet。
安装WindowsCompatibility模块后,运行Invoke-WinCommand
,并将Get-Clipboard
和Set-Clipboard
引用包装在其中。
您会发现,您可以像在Windows PowerShell中一样读取和写入剪贴板。
摘要
如今,在PowerShell中可以做更多有关剪贴板的操作。使用Get-Clipboard
和Set-Clipboard
实现了PowerShell复制到剪贴板的功能。这些cmdlet使您可以使用PowerShell将内容复制到剪贴板,还可以智能地从剪贴板中粘贴。
要获取有关cmdlet的详细信息,请查看详细帮助:
这将为您提供所有可以尝试的各种参数。
Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/