小编rov*_*vda的帖子

PowerShell 函数可以处理多种输入类型吗?

我正在开发一个比较两个对象的函数,以便检测它们是否相同。但是我希望它也可以与其他类型一起使用,例如字符串或整数。

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 function parameter-sets

9
推荐指数
1
解决办法
4958
查看次数

如何使用 Powershell 从 sourceforge 下载文件?

我正在尝试使用 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 下载?

powershell sourceforge invoke-webrequest

0
推荐指数
1
解决办法
2008
查看次数