您的位置:首页 > 运维架构 > Shell

PowerShell获得剪贴板上的数据

2015-06-22 13:08 393 查看
我们每个人一定都在Windows里做过以下几种操作,剪贴,复制,截图,拖拽等操作,而这些记录都会被Windows临时的记录在剪贴版上,有时候会遇到上一步的操作明明是正确的,比如复制了一段内容,但是粘贴的时候却没有按照正确的内容粘贴出来,这里面就是剪贴板的数据出现了问题,可是我们如何才能看到剪贴板里到底当前存在着什么内容呢,我们可以用如下代码看看:

If([System.Windows.Clipboard]::ContainsText())
{
[System.Windows.Clipboard]::GetText()
}
ElseIf([System.Windows.Clipboard]::ContainsImage())
{
[System.Windows.Clipboard]::GetImage()
}
ElseIf([System.Windows.Clipboard]::ContainsFileDropList())
{
[System.Windows.Clipboard]::GetFileDropList()
}
这里,我找到了最主要的剪贴板类,也就是[System.Windows.Clipboard],该类型下面包含了几个静态方法,大家可以查看MSDN网站或者在PowerShellISE里输入的时候可以通过智能列表查看。如上我写了几个判断语句,当任何执行条件为真的时候就可以罗列出对应的数据。

举例,我复制了一些文件列表,这时候我执行如上代码的时候,通过判断,代码最终执行了最后一个判断,并罗列了我之前复制的文件列表:



代码执行结果如下:

If([System.Windows.Clipboard]::ContainsText())
{
[System.Windows.Clipboard]::GetText()
}
ElseIf([System.Windows.Clipboard]::ContainsImage())
{
[System.Windows.Clipboard]::GetImage()
}
<strong>ElseIf([System.Windows.Clipboard]::ContainsFileDropList())
{
[System.Windows.Clipboard]::GetFileDropList()
}</strong>

PS C:\Windows\system32> C:\Users\Administrator\Desktop\Untitled1.ps1
C:\Program Files (x86)\Microsoft Help Viewer
C:\Program Files (x86)\Microsoft Office
C:\Program Files (x86)\Microsoft SDKs
C:\Program Files (x86)\Microsoft Silverlight
C:\Program Files (x86)\Microsoft SQL Server
C:\Program Files (x86)\Microsoft SQL Server Compact Edition
很顺利我们得到了如图片上那样对应的数据。

那么假设,我们还会经常遇到一种情况,如文章一开始提到的那样,很多时候明明复制的内容,粘贴出来却不是自己想要的,可能还是更上一次的内容,反复多次后依然这样,那如何能通过PowerShell解决呢?我们可以这样做:

[System.Windows.Clipboard]::Clear()
是的,没错,只要把剪贴板的缓存彻底清除一下就行了。

剪贴板类型下还有很多方法,比如我们可以用代码来设置数据,这样当我们粘贴的时候就自动输出了,大家可以试试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: