当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用PowerShell复制到剪贴板功能

作者:精品下载站 日期:2024-12-14 12:52:38 浏览:14 分类:玩电脑

使用PowerShell复制到剪贴板功能


在 PowerShell 中编写代码时,您可能想到的最后一件事就是
Windows 剪贴板。我们可能都知道臭名昭著的 Ctrl-C 和 Ctrl-V 键盘快捷键,用于从剪贴板复制和粘贴,但这通常是通过 GUI 完成的。在我们的 PowerShell 脚本中,它不太有用。但是,您知道PowerShell有复制到剪贴板的功能吗?

在本文中,我将介绍如何在 PowerShell 中获取复制和粘贴功能,然后向您介绍 PowerShell 从版本 5 开始提供的 cmdlet。

在 PowerShell v5 之前,复制到剪贴板的唯一方法是使用 clip.exe 应用程序。

老派剪辑.exe

这个应用程序已经存在很长时间并且刚刚工作。通过将文本传送到clip.exe,您可以将文本复制到剪贴板上。这很有效,但每次输入后都添加回车符,这总是很烦人。

PS51> Write-Output 'Hello' | clip

不仅如此,我们还没有简单的方法从剪贴板中提取信息。一旦内容进入剪贴板,我们就被迫手动粘贴内容。使用本机剪贴板命令,这一切都不再是了!

我们现在有两个 cmdlet 可以更好地解决这个问题; Get-ClipboardSet-Clipboard

设置剪贴板 Powershell 命令

Set-Clipboard 替换了clip.exe,但行为完全相同。现在,您可以使用Set-Clipboard,而不是通过管道将输出输出到clip。如果这样做,您会发现当您将内容粘贴到某处时,尾随回车符消失了。

剪贴板现在仅包含字符串 Hello

PS> Write-Output 'Hello' | Set-Clipboard

Set-Clipboard 的另一个有用功能是 Append 参数。传统上,剪贴板只能存储一项。现在,通过将 Append 参数与 Set-Clipboard 结合使用,您可以添加无限数量的项目,而无需删除先前的项目。

PS> Write-Output 'Hello' | Set-Clipboard -Append

获取剪贴板参数

即使您不使用 Set-Clipboard 将内容复制到剪贴板,您仍然可以使用 Get-Clipboard 来理解除简单字符串之外的几种不同类型。例如,如果您已从文件资源管理器复制了文件列表,并且希望将此列表放入 PowerShell 控制台,只需使用 Format 参数并Get-Clipboard 上的“FileDropList”值。

PS51> Get-Clipboard -Format FileDropList

Directory: \Mac\Home\Downloads


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019  10:42 AM       17919094 00_03_xr30_whatyoushouldhave.mov


    Directory: \Mac\Home\Documents\Snagit\Autosaved Captures.localized


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019   1:58 PM      169144472 2019-08-01_13-47-55.mp4

你可以看到它理解剪贴板中的数据类型是文件列表。此外,您可以对图像和其他实体执行相同的操作。

从另一个应用程序复制图像,并使用提供 -Format ImageGet-Clipboard 来检索有关图像的各种属性。

PS51> Get-Clipboard -Format Image


Tag                  :
PhysicalDimension    : {Width=813, Height=113}
Size                 : {Width=813, Height=113}
Width                : 813
Height               : 113
HorizontalResolution : 96
VerticalResolution   : 96
Flags                : 335888
RawFormat            : [ImageFormat: b96b3caa-0728-11d3-9d7b-0000f81ef32e]
PixelFormat          : Format32bppRgb
Palette              : System.Drawing.Imaging.ColorPalette
FrameDimensionsList  : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}
PropertyIdList       : {}
PropertyItems        : {}

PowerShell Core 中的剪贴板操作

遗憾的是,Get-ClipboardSet-Clipboard 命令在 PowerShell Core (v6+) 中不可用,但您仍然可以通过 WindowsCompatibility 模块使用它们。 WindowsCompatibility 模块允许您在 PowerShell Core 中使用 Windows PowerShell cmdlet。

安装 WindowsCompatibility 模块后,运行 Invoke-WinCommand 并将 Get-ClipboardSet-Clipboard 引用包含在其中。

PS622> Invoke-WinCommand -ScriptBlock {'This is on the clipboard' | Set-ClipBoard}
PS622> Invoke-WinCommand -ScriptBlock {Get-ClipBoard}
This is on the clipboard

您会发现您可以像使用 Windows PowerShell 一样读取和写入剪贴板。

概括

如今,您可以使用 PowerShell 中的剪贴板执行更多操作。使用 Get-ClipboardSet-Clipboard 可以将 PowerShell 复制到剪贴板。这些 cmdlet 允许您使用 PowerShell 复制到剪贴板并从剪贴板智能粘贴。

有关 cmdlet 的完整详细信息,请查看详细帮助:

PS51> Get-Help Set-Clipboard -Detailed
PS51> Get-Help Get-Clipboard -Detailed

这将为您提供可以尝试的所有各种参数。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯