公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

PowerShell一鍵下載Nuget某個包的所有版本

freeflydom
2024年12月11日 8:35 本文熱度 834

最近由于工作需要,內網辦公,幸運的是只需要上傳一個*.nupkg一個包信息就可以在私有nuget下載到了,下面就用PowerShell編寫下載腳本,需要注意的是PowerShell后綴ps1(最后一個數字1),以Newtonsoft.Json為例:

下載地址

# 設置NuGet包列表的URL
$packageName = "Newtonsoft.Json"
$targetHttp = "https://www.nuget.org/packages/"
$targetUrl = "{0}{1}" -f $targetHttp, $packageName

保存地址

# 設置保存已下載包的目錄
$outputDirectory = "D:\nuget_packages"
if (-not (Test-Path $outputDirectory)) {
    New-Item -Path $outputDirectory -ItemType Directory
}

 解析下載版本地址

定義下載需要解析的包地址


# 定義下載前綴
$httpPrefix = "https://www.nuget.org/api/v2/package/"
# 下載html文件內容
$htmlContent = Invoke-WebRequest -Uri $targetUrl -UseBasicParsing | Select-Object -ExpandProperty Content
# 匹配標簽
$pattern = "<.*?>"
$matches = [regex]::Matches($htmlContent, $pattern)

獲取所有a標簽


foreach ($match in $matches) {
  $tag = $match.Value
  # 獲取a標簽
  if ($tag -like "<a href=*") {
    Write-Host $tag
  }
}

 輸出結果


<a href="#" id="skipToContent" class="showOnFocus" title="Skip To Content">
...
<a href="/packages/System.Xml.XmlDocument/">
<a href="/packages/Newtonsoft.Json/13.0.3" title="13.0.3">
...
<a href="/packages/Newtonsoft.Json/3.5.8" title="3.5.8">
<a href="/stats/packages/Newtonsoft.Json?groupby=Version" title="Package Statistics">
...
<a href="/packages/Newtonsoft.Json/13.0.3/ReportAbuse" title="Report the package as abusive">
<a href="/packages/Newtonsoft.Json/13.0.3/ContactOwners" title="Ask the package owners a question">
...

觀察上一步結果可以看出來每一個版本都有title,且title內容是版本

# 獲取含有title的a標簽
if ($tag -like "*title=*") {
  Write-Host $tag        
}

 輸出結果


<a href="#" id="skipToContent" class="showOnFocus" title="Skip To Content">
<a href="/packages/Newtonsoft.Json/13.0.3" title="13.0.3">
...
<a href="/packages/Newtonsoft.Json/3.5.8" title="3.5.8">
<a href="/stats/packages/Newtonsoft.Json?groupby=Version" title="Package Statistics">
<a href="https://www.newtonsoft.com/json" data-track="outbound-project-url" title="Visit the project site to learn more about this package" rel="nofollow">
...
<a href="/packages/Newtonsoft.Json/13.0.3/ReportAbuse" title="Report the package as abusive"> <a href="/packages/Newtonsoft.Json/13.0.3/ContactOwners" title="Ask the package owners a question"> <a href="/packages?q=Tags%3A%22json%22" title="Search for json" class="tag">

接著上一步的結果繼續過濾

# 截取href的內容
$substr = $tag.Substring(9)
if ($substr -like "/packages/*") {
    Write-Host $substr
}

輸出結果

/packages/Newtonsoft.Json/13.0.3" title="13.0.3">
...
/packages/Newtonsoft.Json/3.5.8" title="3.5.8">
/packages/Newtonsoft.Json/13.0.3/ReportAbuse" title="Report the package as abusive">
/packages/Newtonsoft.Json/13.0.3/ContactOwners" title="Ask the package owners a question">

有完沒完,又來了?看上面的結果就還差過濾兩個不相關的了,

 獲取href完整內容

# 查找第一個雙引號的位置
$index = $substr.IndexOf('"')
# 獲取部分/packages/Newtonsoft.Json/13.0.3
$substr = $substr.Substring(0,$index)

剔除最后兩個版本無關的a標簽


# 排除報告濫用a標簽
if ($substr -notlike "*/ReportAbuse") {   # 排除聯系作者a標簽   if ($substr -notlike "*/ContactOwners") {     # 匹配版本
    $endIndex = $substr.LastIndexOf('/')     $startPackageIndex = $endIndex + 1     $packageVersion = $substr.Substring($startPackageIndex)   } }

Invoke-WebRequest命令下載并保存文件


# 下載地址nupkg
$packageUrl = "{0}{1}/{2}" -f $httpPrefix,$packageName,$packageVersion # 生成保存文件的路徑 $packageFile = Join-Path -Path $outputDirectory -ChildPath "$packageName.$packageVersion.nupkg" # 下載 .nupkg 文件 Write-Host "Downloading $packageName version $packageVersion from $packageUrl" Invoke-WebRequest -Uri $packageUrl -OutFile $packageFile

全部代碼

?
# 設置NuGet包列表的URL
$packageName = "Newtonsoft.Json"
$targetHttp = "https://www.nuget.org/packages/"
$targetUrl = "{0}{1}" -f $targetHttp, $packageName
# 設置保存已下載包的目錄
$outputDirectory = "D:\nuget_packages"
if (-not (Test-Path $outputDirectory)) {
    New-Item -Path $outputDirectory -ItemType Directory
}
# 定義下載前綴
$httpPrefix = "https://www.nuget.org/api/v2/package/"
# 下載html文件內容
$htmlContent = Invoke-WebRequest -Uri $targetUrl -UseBasicParsing | Select-Object -ExpandProperty Content
# 匹配標簽
$pattern = "<.*?>"
$matches = [regex]::Matches($htmlContent, $pattern)
foreach ($match in $matches) {
    $tag = $match.Value
        # 獲取a標簽
        if ($tag -like "<a href=*") {
            # 獲取含有title的a標簽
            if ($tag -like "*title=*")
            {
                # 截取href的內容
                $substr = $tag.Substring(9)
                if ($substr -like "/packages/*")
                {
                    # 查找第一個雙引號的位置
                    $index = $substr.IndexOf('"')
                    # 獲取部分/packages/Newtonsoft.Json/13.0.3
                    $substr = $substr.Substring(0,$index)
                    # 排除報告濫用a標簽
                    if ($substr -notlike "*/ReportAbuse")
                    {
                        # 排除聯系作者a標簽
                        if ($substr -notlike "*/ContactOwners")
                        {
                            # 匹配版本
                            $endIndex = $substr.LastIndexOf('/')
                            $startPackageIndex = $endIndex + 1
                            $packageVersion = $substr.Substring($startPackageIndex)
                            # 下載地址nupkg
                            $packageUrl = "{0}{1}/{2}" -f $httpPrefix,$packageName,$packageVersion
                            # 生成保存文件的路徑
                            $packageFile = Join-Path -Path $outputDirectory -ChildPath "$packageName.$packageVersion.nupkg"
                            # 下載 .nupkg 文件
                            Write-Host "Downloading $packageName version $packageVersion from $packageUrl"
              Invoke-WebRequest -Uri $packageUrl -OutFile $packageFile
                            
                        }
                        
                    }
                    
                }
                
            }
            
        }
}
# 執行結束暫停
$null = Read-Host

轉自https://www.cnblogs.com/dingshuanglei/p/18597696


該文章在 2024/12/11 8:35:15 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产mv天美传媒在线视频播放 | 国产精品一级毛片无码a片 国产精品一级毛片在线观看 | 囯产精品一品二区三区 | 国产午夜精品福利一区久久久 | av无码乱码麻豆精品国产 | 97色精品视频在 | 国产内射在线激情一区 | 国产亚洲日本精品成人 | 18禁超污无遮挡无 | 国产毛片一级二级视频 | 91精品久久久久一区二区三区 | 国产一区二区视频在线关看 | 国产精品男人影院在线播放 | 精品视频免费日产一区 | 国产精品亚洲av色欲在线观 | 国产在线观看成人免费视频 | 国产午夜精品美女视频 | 国产精品日产三级在线观看 | 国产午夜精品无码 | 国产波霸爆乳一区二区 | 国产原创无码视频在线观看 | 国产尤物亚洲精品不卡 | 国产高潮流白浆喷水在线观看 | 国产成人综合激情视频在线观看 | 国产欧美日韩专区 | av午夜午夜快憣免 | 国产高清视频免费最新在线 | 2025国产精产品在线不卡 | 激情丝袜欧美专区在线观看 | 国产女人天天弄高清免 | 国产av熟女一区二区三区 | 91精品国产免費人成网站 | 国语自产偷拍精品视 | 18禁无码无遮挡在线播放 | 国产稚嫩高中生呻吟激情在线 | 国产高清一区视频在线播放 | 精品国产伦一区二区三区在线 | 国产麻豆91 | 国产无套码aⅴ在线观 | 丰满大屁股在线播放bbw | 国产福利一区二区三区高清 |