当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 下载 Git 提示

作者:精品下载站 日期:2024-12-14 07:49:42 浏览:14 分类:玩电脑

使用 PowerShell 下载 Git 提示


因此,我一直在分享我为使用 Git 创建的许多 PowerShell 工具,其中包括一些用于从 GitHub 上的 Git Tips 项目获取提示的工具。我最初的工作基于这样一个事实:我有该存储库的本地克隆,并且想要搜索本地 Tips.json 文件。但我意识到你们中的一些人可能不想克隆存储库或无法使其保持最新。由于 json 文件可以在线获取,并且 PowerShell 具有用于抓取 Internet 内容的工具,因此我决定提供一个版本,该版本将我之前的命令的功能与在线搜索的便捷性结合起来。

PowerShell 有多个可用于获取 Web 内容的 cmdlet。我使用 Invoke-RestMethod 主要是因为它会自动将下载的 json 数据转换为对象。

$params = @{
     Uri = "https://raw.githubusercontent.com/git-tips/tips/master/tips.json"
     ErrorAction = "Stop"
    }
    Write-Verbose "Retrieving tips from $($params.uri)"
    $tips = Invoke-RestMethod @params

一旦我下载了提示,我就可以做任何我想做的事情。我可以选择一个随机提示、显示全部提示或搜索提示标题。我的新命令提供了所有这些选项。

Get-GitTip.ps1:

#requires -version 4.0

Function Get-GitTip {



[cmdletbinding(DefaultParameterSetName = "Default")]
Param(

[Parameter(ParameterSetName = "Random")]
[switch]$Random,
[Parameter(ParameterSetName = "Random")]
[Alias("show")]
[switch]$Pretty,
[Parameter(ParameterSetName = "Search")]
[ValidateNotNullorEmpty()]
[Alias("find")]
[string]$Search
)


Write-Verbose "Starting: $($MyInvocation.Mycommand)"
#display PSBoundparameters formatted nicely for Verbose output  
[string]$pb = ($PSBoundParameters | Format-Table -AutoSize | Out-String).TrimEnd()
Write-Verbose "PSBoundparameters: `n$($pb.split("`n").Foreach({"$("`t"*4)$_"}) | Out-String) `n" 
Write-Verbose "ParameterSet: $($PSCmdlet.ParameterSetName)"

Try {
    $params = @{
     Uri = "https://raw.githubusercontent.com/git-tips/tips/master/tips.json"
     ErrorAction = "Stop"
    }
    Write-Verbose "Retrieving tips from $($params.uri)"
    $tips = Invoke-RestMethod @params
    Write-Verbose "Found $($tips.count) tips"

    Switch ($PSCmdlet.ParameterSetName) {

    "Default" {  $tips }

    "Random" { 
        Write-Verbose "Displaying a single random tip"
        $tip = $tips | Get-Random 
        if ($Pretty) {
            Write-Verbose "Writing pretty output to the host"
            $title = @"

----------------------
  Git Tip of The Day  
----------------------

"@
            Write-Host $title  -ForegroundColor Yellow -BackgroundColor DarkGray
            Write-Host $tip.Title -ForegroundColor Green
            Write-Host $tip.tip -ForegroundColor cyan
            #write a blank line
            Write-Host " "
        }
        else {
            $tip
        }
        }

    "Search"  { 
        Write-Verbose "Filtering title for $Search"
        $tips.where({$_.title -match $Search}) 
        }

    } #switch

}
Catch {
    Write-Error $_
}

Write-Verbose "Ending: $($MyInvocation.Mycommand)"

}

一旦我将命令添加到我的 PowerShell 会话中(或将其加载到您的个人资料中),我就可以从在线 json 文件中获取所有提示,这是默认行为。

[玩转系统] 使用 PowerShell 下载 Git 提示

我还可以进行搜索,包括根据需要使用正则表达式。

[玩转系统] 使用 PowerShell 下载 Git 提示

最后,我可以通过获得随机提示来使用此功能作为我的每日提示。

[玩转系统] 使用 PowerShell 下载 Git 提示

我什至使用 Write-Host 添加了一个参数,使其变得“漂亮”。

[玩转系统] 使用 PowerShell 下载 Git 提示

同样,这一切都不需要您克隆 GitHub 存储库,甚至不需要安装 git。如果该功能遇到任何问题,请在 Gist 页面的评论中发布。

祝您度过愉快的一周!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯