我在服务器上运行一个 powershell 脚本,它对文件执行一些复制和粘贴命令。
脚本运行时,如果我在本地机器上复制某些内容,它不会复制;脚本复制命令会覆盖我的本地缓冲区。我怀疑发生这种情况是因为我已登录到服务器并启用了剪贴板集成,有什么办法可以阻止脚本干扰我的本地剪贴板,因为我认为它会使用服务器端剪贴板而不是我的剪贴板,只是因为我已登录到服务器。
当我的副本停止工作时,我立即知道服务器上已开始运行脚本。我只是希望找出是否有办法让我仍然可以使用剪贴板集成与远程登录,并以某种方式将剪贴板分离为脚本环境,或者至少不会让复制的内容覆盖我的缓冲区。谢谢阅读!
答案1
以下任何选项都可以避免使用本地剪贴板:
- 在本地资源/本地设备/剪贴板下,在 RDP 会话中禁用剪贴板。
- 用简单变量替换
Get/Set-Clipboard
脚本中的命令。 - 在设置剪贴板之前,让你的脚本断开你的 rdp 会话(但保持其运行):
tsdiscon.exe (Get-Process -PID $pid).SessionID
- 如果您的脚本是通过计划任务运行的,请将任务设置为“无论用户是否登录”都运行。这会强制 powershell 在另一个会话中运行。
- 如果您手动启动脚本,请使用远程 powershell 而不是 RDP 会话:
Invoke-Command -ComputerName "MyServer" -ScriptBlock {C:\path\to\script.ps1}
但如果你无法做到以上任何一项,你可以尝试通过将当前剪贴板设置为变量、运行脚本、然后将剪贴板设置回原来的状态来减少影响,例如:
# save current clipboard:
$clip = Get-Clipboard
# do stuff
Set-Clipboard "myText"
Get-Clipboard | Out-File stuff.txt
# set clipboard back:
Set-Clipboard $clip
但这仅适用于文本。如果你将文件等对象复制到剪贴板,它将被覆盖。