我正在开发一个比较两个对象的函数,以便检测它们是否相同。但是我希望它也可以与其他类型一起使用,例如字符串或整数。
C++ 允许您声明具有相同名称的不同函数,以不同的方式处理具有不同输入类型的函数调用。我知道参数集的存在,但据我所知,用户必须指定他正在使用哪个参数集。
我正在尝试做这样的事情
function Compare-Objects{
Param(
[Parameter(Mandatory=$true,
Position=0,
ParameterSetName = "Hashtables")]
[ValidateNotNullOrEmpty()]
[Hashtable]$Item1Hash,
[Parameter(Mandatory=$true,
Position=0,
ParameterSetName = "Integers")]
[ValidateNotNullOrEmpty()]
[int]$Item1int,
[Parameter(Mandatory=$true,
Position=1,
ParameterSetName = "Hashtables")]
[ValidateNotNullOrEmpty()]
[Hashtable]$Item2Hash,
[Parameter(Mandatory=$true,
Position=1,
ParameterSetName = "Integers")]
[ValidateNotNullOrEmpty()]
[Hashtable]$Item2Int
)
if($PSCmdlet.ParameterSetNamePositionv -match "Integers"){ Return ($Item1Int -eq $Item2Int)}
else{
#do some other stuff with $Item1Hash and $Item2Hash
}
}
Run Code Online (Sandbox Code Playgroud)
如果我也可以将变量命名为相同,则额外加分(因此$Item1Hash并$Item1Int成为$Item1分配了适当类型的变量)
我正在尝试使用 powershell 在几台计算机中自动更新 KeePass,因此我对某种从 sourceforge 自动下载最新版本的方法感兴趣,但是我无法使其工作。我通过谷歌搜索看到了很多参考资料,但没有一个对我有用。我目前正在尝试这个:
$url=https://sourceforge.net/projects/keepass/files/latest/download
#$url=https://sourceforge.net/projects/keepass/files/KeePass%202.x/2.49/KeePass-2.49-Setup.exe
Invoke-WebRequest -Uri $url -OutFile $env:USERPROFILE'\Downloads\KeePass2-Latest.exe'
Run Code Online (Sandbox Code Playgroud)
这两者都下载网络的页面文件,而不是安装程序本身。
根据此 Sourceforge 帖子“只要下载功能能够遵循重定向,并且看起来不是浏览器源(例如,没有类似浏览器的用户代理字符串),常规下载链接就可以工作),它只会重定向到文件本身。 ”
然而它对我不起作用,我没有指定任何 UserAgent,我什至尝试将其用作-UserAgent $null参数,但没有成功。
有没有办法使用命令行/Powershell 以编程方式从 sourceforge 下载?