[玩转系统] 释放 PowerShell GitHub 能力的秘密
作者:精品下载站 日期:2024-12-14 13:10:49 浏览:15 分类:玩电脑
释放 PowerShell GitHub 能力的秘密
您是否厌倦了通过 Web 界面重复执行相同的 GitHub 任务?或者希望通过自动化将您的工作流程提升一个档次?幸运的是,PowerShellForGitHub 模块即将解锁 PowerShell GitHub 功能!
在本教程中,您将学习如何使用 PowerShell、用于常见 GitHub 操作的 PowerShellForGitHub 模块等。
立即通过自动化有效提升您的工作流程!
先决条件
本教程将是一个实践演示。如果您想继续操作,请确保您具备以下条件:
- 具有公共存储库的 GitHub 帐户。
- GitHub 个人访问令牌 (PAT)。
- 至少安装了 Windows PowerShell 5.1 或 PowerShell 7.x 的计算机 - 本教程使用 PowerShell 版本 7.2.3。
安装 PowerShellForGitHub 模块
PowerShellForGitHub 模块利用 PowerShell 的优势为 GitHub API 提供命令行交互和自动化。安装 PowerShellForGitHub 模块的最快方法是在 PowerShell 控制台中使用 PowerShell Gallery。
1. 以管理员身份打开 PowerShell,然后运行下面的 Install-Module 命令以从 PowerShell 库安装 PowerShellForGitHub 模块。
Install-Module -Name PowerShellForGitHub
输入y并回车继续安装,如下图。
2. 现在运行以下 Get-Command 以验证模块 (-Module) 是否安装成功。此命令列出了可用于 PowerShellForGitHub 模块的所有 cmdlet。
Get-Command -Module PowerShellForGitHub
由于 Get-Module 不提供 PowerShellForGitHub 模块的输出,因此您运行 Get-Command。
如果您已成功安装 PowerShellForGitHub 模块,您将获得该模块的一长串可用 cmdlet,如下所示。
3. 最后,运行以下 Set-GitHubAuthentication 命令连接到您的 GitHub 帐户。
Set-GitHubAuthentication
您可以输入任何内容作为用户名,这是必需的,但无论如何都会被忽略。但请务必输入您的个人访问令牌作为密码。
成功连接到 GitHub 后,您可以开始使用 PowerShell GitHub 模块的 cmdlet。
如果您不确定 PowerShellForGitHub 模块 cmdlet 的工作原理,请运行 Get-Help 命令,然后运行相关 cmdlet,如下所示:Get-Help Set-GitHubRepository
使用PowerShell函数创建GitHub存储库
现在 PowerShellForGitHub 模块已安装完毕,本教程将开始介绍 PowerShell GitHub 可以提供的最好功能之一:创建您自己的工具!如何?通过创建 PowerShell 函数。
PowerShell 函数允许您组织脚本并促进代码的重用,从而显着提高代码的可用性和可读性。
1. 创建一个 PowerShell 脚本文件,将以下代码添加到文件中,相应更改值,然后将文件另存为 myscript.ps1。
下面的代码是执行以下操作的 PowerShell 函数:
- 创建存储库 (
New-GitHubRepository
)。
- 添加(帮助)文件 (
Set-GitHubContent
),并创建提交 (-CommitMessage
)。
- 并可选择创建一个分支 (New-GitHubRepositoryBranch)。
Function CreateRepo {
param ($Owner,$RepoName,$Branch,$HelpFilePath,$HelpFileContent,$FirstCommitMessage)
# Creating a new repository
New-GitHubRepository -RepositoryName $RepoName
# Add a file and perform first commit
Set-GitHubContent -OwnerName $Owner -RepositoryName $RepoName -Path $HelpFilePath -CommitMessage $FirstCommitMessage -Content $HelpFileContent -BranchName main
# Add a branch if the 'Branch' parameter is specified
If ($Branches) {
New-GitHubRepositoryBranch -OwnerName $Owner -RepositoryName $RepoName -TargetBranchName $Branch
}
}
# Call the CreateRepo function - Be sure to replace the values below accordingly
CreateRepo -Owner BTA1981 -RepoName Repo0007 -Branch develop -HelpFilePath README.md -HelpFileContent '# README' -FirstCommitMessage 'Adding README.md'
2. 现在,运行脚本 (myscript.ps1) 并查看该函数如何工作。
.\myscript.ps1
运行脚本后,您将获得脚本创建的存储库的名称和可见性的输出。
3. 最后,打开您最喜欢的网络浏览器,导航到 GitHub,然后查看新创建的存储库,如下所示。
执行查询并创建自定义报告
通过运行脚本创建 GitHub 存储库非常酷。但将 PowerShell 与 GitHub 结合起来的另一个很酷的用例是执行查询和创建自定义报告。如何?通过使用 PowerShell GitHub 管道。
借助 PowerShell 管道,您只需少量代码即可创建强大的查询,并将命令与管道运算符“|”链接在一起。
GitHub 存储库中的内务管理至关重要。也许,您需要更深入地了解在特定时期内未更新的存储库。
1. 运行以下命令以获取 PowerShell 团队去年未更新的 GitHub 存储库的概述。
# - < WHAT DOES THIS COMMAND DO? >
# Get-GitHubRepository - Get all repositories from the owner PowerShell team.
# Where-Object - Where the repository isn't updated in the last year (Get-Date).
# Sort-Object - Sort results based on the last updated date/time.
# Select-Object - Show the full name and date/time when each repository was last updated
Get-GitHubRepository -OwnerName PowerShell |
Where-Object {$_.updated_at -lt (Get-Date).AddMonths(-12)} |
Sort-Object updated_at | Select-Object full_name,updated_at
注意管道运算符的使用量。如果没有管道运算符,您需要创建多个变量来存储数据,然后才能将该数据用于另一个 cmdlet。
下面,您可以看到去年未更新的每个存储库的列表。
您的输出不仅限于 PowerShell 控制台。您还可以在文本或 CSV 文件中创建输出报告。
2. 现在,运行以下任一命令来获取 GitHub 存储库列表。但这一次,控制台上不会显示任何输出,因为输出会导出到文本文件 (Out-File) 或 CSV 文件 (Export-CSV)。
请注意,您可以根据需要替换文件的路径和名称(C:\Outdated.txt 和 C:\Outdated.csv)。
# Export the output to the C:\Outdated.txt file
Get-GitHubRepository -OwnerName PowerShell |
Where-Object {$_.updated_at -lt (Get-Date).AddMonths(-12)} |
Sort-Object updated_at | Select-Object full_name,updated_at |
Out-File -FilePath C:\Outdated.txt
# Export the output to the C:\Outdated.csv file
Get-GitHubRepository -OwnerName PowerShell |
Where-Object {$_.updated_at -lt (Get-Date).AddMonths(-12)} |
Sort-Object updated_at | Select-Object full_name,updated_at |
Export-Csv -Path C:\Outdated.csv
3. 最后,运行下面的任一 Get-Content 命令来查看报告文件的内容,具体取决于您用于创建报告的文件类型。
Get-Content C:\Outdated.txt
Get-Content C:\Outdated.csv
批量执行配置更改
通常,您必须批量执行配置更改,例如更改多个存储库可见性。幸运的是,PowerShellForGithub 模块支持此类更改。
想象一下,您有很多 GitHub 存储库需要管理,并且您需要将所有以“REPO00”名称开头的存储库从公共可见性更改为私有可见性。
运行以下命令来执行以下操作:
- 查找名称以
REPO00
开头的用户 (BTA1981
) 存储库。 - 将每个匹配的存储库的可见性更改为
-Private
。
Get-GitHubRepository -OwnerName BTA1981 | Where-Object { $_.name -like "REPO00*" } |
Set-GitHubRepository -Private:$True -Verbose
如下所示,添加 -Verbose
参数会输出有关该命令所执行操作的详细信息。
自动处理存储库问题
当您发现新问题或拉取请求时,谁没有重复且乏味的任务需要执行?为什么要奋斗?让 PowerShellForGitHub 模块扭转局面。
1. 打开您的 myscript.ps1 文件,并将代码替换为下面的代码,但请务必更改为您自己的值。
下面的代码对最近未更新的存储库中的最新问题进行了评论。
# - < WHAT DOES THIS CODE DO? >
# Get-GitHubRepository - Get all the GitHub issues
# labeled (Get-GitHubIssue) as a bug from the specified repository.
# Where-Object - Where there hasn't been an update for a day (Get-Date).
# New-GitHubIssueComment - Add a custom GitHub issue comment
Get-GitHubRepository -OwnerName BTA1981 -RepositoryName Repo0001 | Get-GitHubIssue -label 'bug' |
Where-Object { $_.updated_at -lt (Get-Date).AddDays(-1)} |
New-GitHubIssueComment -Body "It's been a day since this issue is updated. Is there any update?"
2. 替换代码后,保存文件,并运行脚本。
.\myscript.ps1
脚本的输出将显示每个评论的详细信息,这些评论正在使用我们的脚本更新为新评论。
3. 在浏览器上导航到 GitHub,然后单击您在代码中指定的存储库 (Repo0001)。
4. 现在,单击问题选项卡(左上角),您将看到存储库问题的概述,如下所示。
单击“排序”下拉菜单,选择“最近更新”选项,然后单击一天未更新的 BUG。
下面,您可以看到一条新评论,称该问题尚未更新。
5. 将 myscript.ps1 文件的内容替换为以下代码,这是消除重复任务的另一个示例。
每当指定存储库出现新问题时,下面的代码就会自动将新的 GitHub 问题分配给用户。
# The GitHub username you want to assign the issue to.
$Assignee = 'bta1981'
# The account owner of the repository you want to assign an issue for.
$Owner = "BTA1981"
# The name of the repository that has the issue you want to assign.
$Repository = "Repo0001"
# - < WHAT DOES THIS COMMAND DO? >
# Get-GitHubRepository - Get the most recent GitHub issue (Get-GitHubIssue)
# for the specified repository ($Repository)
# Add-GitHubAssignee - Assign a user to the most recent issue
$MostRecentIssue = Get-GitHubRepository -OwnerName $Owner -RepositoryName $Repository |
Get-GitHubIssue | Sort-Object -Descending -Property created_at | Select-Object -First 1 |
Add-GitHubAssignee -OwnerName $Owner -RepositoryName $Repository -Assignee $Assignee -Issue $MostRecentIssue.IssueNumber -Verbose
6. 替换 myscript.ps1 文件中的代码后,运行该脚本。
该脚本会立即将 GitHub 问题的分配更改为您指定的受让人 (BTA1981)。
.\myscript.ps1
由于脚本中存在 -Verbose 参数,因此会显示有关脚本分配的 GitHub 问题的详细输入。
7. 最后,导航到您指定的 GitHub 存储库 (Repo0001) 中的最新问题,以验证脚本是否分配了该问题。
为多个存储库创建拉取请求
管理拉取请求(特别是如果您有许多存储库)可能会很痛苦。但好消息是管理拉取请求是 PowerShellForGitHub 模块的另一个功能。
请注意,您将在代码上使用 PowerShell splatting 以获得更好的可读性,将要提供给命令的参数捆绑在一起,并将它们传递到表中。 PowerShell splatting 比编写一长行代码要好得多。
打开您的 myscript.ps1 文件并将代码替换为以下代码。请务必更改您自己的值,然后保存更改。
下面的代码在存储库(repo0001
和 repo0002
)中发送拉取请求,并将来自 feature01
分支的更改合并到 main
分支。
# Create a hashtable with some variables
$prParams = @{
OwnerName = 'bta1981'
RepositoryName = "$repo"
Title = 'Add simple file to root'
# Head branch (containing the changes to be merged)
Head = 'feature01'
# Target branch of the pull request where the head changes will be merged.
Base = 'main'
Body = "Adds a simple text file to the repository root.`n`nThis is an automated PR!"
}
# Create a variable with an array that contains the repositories we want to target
$Repos = @('repo0001', 'repo0002')
# Go through all repositories and create the new pull requests
ForEach ($Repo in $Repos) {
New-GitHubPullRequest @prParams
}
更改脚本中的值后,保存更改并运行脚本。
.\myscript.ps1
现在,导航到 GitHub 上的拉取请求。您将看到针对您在 myscript.ps1 脚本中指定的存储库的新拉取请求。
或者,运行以下命令可以更好/更清楚地了解按年龄降序排列的拉取请求。下面的代码在所有者 PowerShell
的所有存储库中查找以 Power
名称开头的五个最新 (-first 5
) 拉取请求。
Get-GitHubRepository -OwnerName PowerShell | Where-Object { $_.name -like "Power*" } |
Get-GitHubPullRequest | Sort-Object created_at -Descending | Select-Object title,created_at -first 5
结论
本教程旨在帮助您开始使用 PowerShellForGitHub 模块来自动执行常见的 PowerShell GitHub 操作。进展顺利吗?
您已了解如何安装 PowerShellForGitHub 模块并与其建立连接。此时,只要您拥有 PowerShell 和 PowerShellForGitHub 模块,您就可以放心地在本地和远程管理您的 GitHub 存储库。
现在,查看您的日常 GitHub 工作流程,并尝试合并和修改您在本教程中学到的示例片段。是时候将您的 PowerShell GitHub 生产力提升到新的水平了!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[软件合集] 25年5月28日 精选软件37个
[软件合集] 25年5月27日 精选软件26个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[办公模版] office模板合集:包含word、Excel、PowerPoint、Access四类共计2000多个模板
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[音乐] 华语流行伤感情经典歌无损音乐合集(700多首)
[影视] 内地绝版高清录像带 [mpg]
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag