LoginSignup
8
13

More than 5 years have passed since last update.

[PowerShell]NuGetからパッケージをダウンロードする

Last updated at Posted at 2018-03-14

[PowerShell]NuGetからパッケージをダウンロードする

経緯

社内の大幅組織変更の予定のため、EXCELでADのユーザー情報を一括で登録できるように検討したところ、ClosedXMLを使ってPowerShellからEXCELを操作できるという記事を見つけました。

@miyamiyaさんの記事
PowerShell で ClosedXML を使って Excel ファイルを作成する

ただ、ClosedXMLMicrosoft Open XML Format SDKは、GitだけでなくNugetにもあるのでダウンロードと配置の手間を省くため、PowerShellでNugetパッケージを取得する方法にしました。

環境

Windows 10 Pro 1703
Windows PowerShell ISE

Powershellコマンド

  • スクリプトを実行すると、ダウンロードすることができます。
Nugetからダウンロードするスクリプト

try
{
    # パッケージプロバイダにNugetを追加
    Install-PackageProvider -Name Nuget

    # Nugetからパッケージ名を検索して、インストール実行
    Find-Package -Name DocumentFormat.OpenXml -Source https://www.nuget.org/api/v2 -RequiredVersion 2.5.0 | Install-Package
    Find-Package -Name ClosedXML -Source https://www.nuget.org/api/v2 -RequiredVersion 0.76.0 | Install-Package

    # パッケージのインストール確認
    Get-Package -ProviderName Nuget
}

catch [Exception]
{
    Write-Host $_.Exception.Message
}


~~

  • '-Source https://www.nuget.org/api/v2` をつけていないとエラーでダウンロードできません。
  • ダウンロードされると、C:\Program Files\PackageManagement\NuGet\Packagesに依存関係を含めてフォルダが生成されています。
  • かなりのファイルがダウンロードされるので、若干時間がかかります。
  • 依存関係が面倒だったので、バージョンを指定するように修正(2018/03/13)

WS000000589.JPG

まとめ

PowerShellにNuGetが登録されていれば

Find-Package -Name <パッケージ名> -Source https://www.nuget.org/api/v2

でNuGetパッケージの検索を行い、 パイプラインでインストール指定を行うことでそのままダウンロードが行えます。

Find-Package -Name <パッケージ名> -Source https://www.nuget.org/api/v2 | Install-Package

追記1.

'-Source https://www.nuget.org/api/v2` をつけていないとエラーになるか書いてある記事がありました。

senkousya/PS_startClosedXMLOnPowershell

Set-PackageSourceを使わなくてよかった。
危なく開発環境を壊すところでしたw

追記2.

  • 依存関係が面倒だったので、スクリプトを変更しました。

ClosedXML -Version 0.76.0
DocumentFormat.OpenXml -Version 2.5.0

このバージョンであれば、二つのDLLの指定で行けそうです。

ClosedXMLを使ったEXCELファイル作成

[Reflection.Assembly]::LoadFile("C:\Program Files\PackageManagement\NuGet\Packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll")
[Reflection.Assembly]::LoadFile("C:\Program Files\PackageManagement\NuGet\Packages\ClosedXML.0.76.0\lib\net40-client\ClosedXML.dll")


$workBook = new-object ClosedXML.Excel.XLWorkbook
$workSheet = $workBook.Worksheets.Add("Sheet1")
$worksheet.Cell("A1").Value = "Hello world";
$workBook.SaveAs("c:\tmp\helloworld.xlsx")

8
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13