我从互联网上复制了这段代码,并正在对其进行审查,以进行可能的升级。然而,在我的一生中,我想不出这段片段的最后两行应该完成什么。事实上,我可以从我使用代码的运行程序中删除它们,并且程序继续正常工作。通常,我只是假设它是未被删除的剩余垃圾,但我在另一个程序中找到了相同的最后4行代码。
#------------------- Add ClipBoard Watcher Code --------------
# This script is a small update to the one found here:
# https://mnaoumov.wordpress.com/2013/08/31/cpowershell-clipboard-watcher/
# This started in this SO thread: https://stackoverflow.com/q/71014273/147637
# This is expected to run fine on Win10 and Win11 (and probably other versions)
# This script binds the OS functions to monitor when new items are put on the clipboard.
# It is a powershell script, that has been tested to work.
$script:ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest
function PSScriptRoot { $MyInvocation.ScriptName | Split-Path }
Trap { throw $_ }注意:我在程序中搜索了对PsScriptRoot的引用,除了这个函数的名称之外,它们不存在。
发布于 2022-08-09 02:03:47
$script:ErrorActionPreference = "Stop"
Trap { throw $_ }
语句是冗余,因为将$ErrorActionPreference preference variable设置为Stop本身具有将非终止错误和语句终止错误提升为脚本终止(致命)错误的效果。
Set-StrictMode -Version Latest
在-Version Latest production 代码中,使用带有 的是不明智的,因为如果它们包含额外的严格检查以确保代码可能失败,那么在未来的PowerShell版本中,代码可能会中断。
function PSScriptRoot { $MyInvocation.ScriptName | Split-Path }
如果没有这个函数定义,called,就等于死重,就像Abraham Zinala指出的那样。
顺便提一句:虽然函数的名称表明它试图复制automatic $PSScriptRoot variable的值(没有很好的理由,因为变量在v2之后就可用了),但它返回了一些不同的内容:$MyInvocation.ScriptName包含调用脚本的路径(如果有的话),而不是运行脚本的路径。
https://stackoverflow.com/questions/73285412
复制相似问题