精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

PowerShell一鍵下載Nuget某個(gè)包的所有版本

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

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

下載地址

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

保存地址

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

 解析下載版本地址

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


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

獲取所有a標(biāo)簽


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

 輸出結(jié)果


<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">
...

觀察上一步結(jié)果可以看出來(lái)每一個(gè)版本都有title,且title內(nèi)容是版本

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

 輸出結(jié)果


<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">

接著上一步的結(jié)果繼續(xù)過(guò)濾

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

輸出結(jié)果

/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">

有完沒(méi)完,又來(lái)了?看上面的結(jié)果就還差過(guò)濾兩個(gè)不相關(guān)的了,

 獲取href完整內(nèi)容

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

剔除最后兩個(gè)版本無(wú)關(guān)的a標(biāo)簽


# 排除報(bào)告濫用a標(biāo)簽
if ($substr -notlike "*/ReportAbuse") {   # 排除聯(lián)系作者a標(biāo)簽   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

全部代碼

?
# 設(shè)置NuGet包列表的URL
$packageName = "Newtonsoft.Json"
$targetHttp = "https://www.nuget.org/packages/"
$targetUrl = "{0}{1}" -f $targetHttp, $packageName
# 設(shè)置保存已下載包的目錄
$outputDirectory = "D:\nuget_packages"
if (-not (Test-Path $outputDirectory)) {
    New-Item -Path $outputDirectory -ItemType Directory
}
# 定義下載前綴
$httpPrefix = "https://www.nuget.org/api/v2/package/"
# 下載html文件內(nèi)容
$htmlContent = Invoke-WebRequest -Uri $targetUrl -UseBasicParsing | Select-Object -ExpandProperty Content
# 匹配標(biāo)簽
$pattern = "<.*?>"
$matches = [regex]::Matches($htmlContent, $pattern)
foreach ($match in $matches) {
    $tag = $match.Value
        # 獲取a標(biāo)簽
        if ($tag -like "<a href=*") {
            # 獲取含有title的a標(biāo)簽
            if ($tag -like "*title=*")
            {
                # 截取href的內(nèi)容
                $substr = $tag.Substring(9)
                if ($substr -like "/packages/*")
                {
                    # 查找第一個(gè)雙引號(hào)的位置
                    $index = $substr.IndexOf('"')
                    # 獲取部分/packages/Newtonsoft.Json/13.0.3
                    $substr = $substr.Substring(0,$index)
                    # 排除報(bào)告濫用a標(biāo)簽
                    if ($substr -notlike "*/ReportAbuse")
                    {
                        # 排除聯(lián)系作者a標(biāo)簽
                        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
                            
                        }
                        
                    }
                    
                }
                
            }
            
        }
}
# 執(zhí)行結(jié)束暫停
$null = Read-Host

轉(zhuǎn)自https://www.cnblogs.com/dingshuanglei/p/18597696


該文章在 2024/12/11 8:35:15 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产入口在线观看 | 人妻少妇邻居少妇好多水在线 | 国产成人麻豆精品午夜福利在线 | 国产日韩亚洲三级片在线观 | 亚洲一区日本 | 国产av国片精品有毛 | 国产无码一道本一区二区三区在线观看 | 护士人妻hd中文字幕 | 国产精品扒开腿做爽爽爽A片软件 | 人妻久久久久久精品99系列全集综艺天堂在线www | 无码精品加勒比视频 | 欧美内射深插日本少妇 | 日韩成人黄色片 | 各种场合肉H校园1V1 | 日韩欧美精品综合一区二区三 | 无码中文国产不卡视频 | 国产人妻人伦又粗又大爽歪歪 | 亚洲国产精品日韩视频 | 香港三日本三级少妇三级视频 | 人妻无码中文专区久久av | 亚洲囯产精品一区二区www | 久久久久亚洲视频 | 亚洲中文无码亚洲人成影院 | 国产成年无码AⅤ片在线观看 | 午夜免费国产体验区免费的 | 亚洲熟妇无码乱子av电影 | 性无码一区二区三 | 亚洲国产精品婷婷久久久久 | 熟女人妻一区二区三区免费看 | 国产福利酱国产一区二区 | 国产精品一区二区三区四区五区 | 丰满人妻被中出中文字幕 | 一区三区在线专区在线 | 在线视频精品一区二区三区 | 国产成人无码情景av | 日本超A大片在线观看 | 国产黄A片免费网站免费 | 久久国产精品亚洲综合 | 丰满人妻妇伦又伦精品国产 | 精品欧美一区二区三区成人片在线 | 国产精品乱码久久久久久软件 |