2020年1月28日火曜日

Linux で PowerShell に超入門

概要

PowerShell は Windows 環境上で実行可能なスクリプト言語です
コマンドベースの操作でいろいろな情報の取得や変更ができます
PowerShell は .NET をベースにして動作します
どうやら .NET SDK という Linux 環境で .NET を動作、開発できるツールが Microsoft から提供されているようです
今回は .NET SDK のインストール方法と PowerShell のインストール方法を紹介し簡単な動作確認とサンプルスクリプトを紹介します

環境

  • CentOS 7.7.1908
  • .NET SDK 3.1
  • PowerShell 6.2.3

.NET SDK のインストール

Linux で .NET を動作させるための SDK やランタイムをインストールします

  • rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
  • yum -y install dotnet-sdk-3.1
  • dotnet --info

dotnet コマンドが使えるようになっていれば OK です

PowerShell のインストール

PowerShell は .NET 上動作します
dotnet tool を使うとインストールできます

  • dotnet tool install --global PowerShell

インストールすると pwsh というコマンドが使えるようになります
インストールされるパスは以下でした

  • find / -name "pwsh"

=> /root/.dotnet/tools/pwsh

  • dotnet tool list --global

でインストールしたツールの一覧が確認できます

PowerShell プロンプトの起動

  • /root/.dotnet/tools/pwsh

と実行すると PowerShell のプロンプトが起動します
ここから PowerShell のコマンドを入力することができます

例えば取得系のコマンドの一覧を表示するには以下のようなコマンドを入力します

  • Get-Command -Verb Get

一覧にあるタイムゾーンを取得するコマンドを投げてみるとちゃんと取得できることが確認できると思います

  • Get-TimeZone
Id : Asia/Tokyo DisplayName : (UTC+09:00) Japan Standard Time StandardName : Japan Standard Time DaylightName : Japan Daylight Time BaseUtcOffset : 09:00:00 SupportsDaylightSavingTime : True

PowerShell ファイルを作成して実行する

プロンプトに入ってコマンドを実行することもできますが一連の動作はファイルにまとめてスクリプトとして実行したいです
そんな場合は ps1 というスクリプトを作成すれば OK です

  • vim test.ps1
$a = 123
$b = "hoge"
Write-Output $a $b
  • /root/.dotnet/tools/pwsh ./test.ps1

で「123」と「hoge」が表示されるのが確認できると思います

PowerShell のサードパーティのモジュールをインストールしてみる

PowerShell には PowerShell Gallery というパッケージ管理の仕組みがあります
ここからサードパーティのモジュールを簡単にインストールすることができます
PowerShell プロンプトを起動してモジュールをインストールしてみましょう

  • Find-Module -Name VMware*
  • Install-Module -Name VMware.PowerCLI

これでモジュールをインストールできます
あとは普通にインストールしたモジュールのコマンドを使うことができます
またインストールしたモジュールの一覧を確認するコマンドは以下の通りです

  • Get-InstalledModule

モジュール関連のコマンドの一覧を確認するには以下のように実行します

  • Get-Command *-Module
CommandType Name Version Source ———– —- ——- —— Function Find-Module 2.1.3 PowerShellGet Function Install-Module 2.1.3 PowerShellGet Function Publish-Module 2.1.3 PowerShellGet Function Save-Module 2.1.3 PowerShellGet Function Uninstall-Module 2.1.3 PowerShellGet Function Update-Module 2.1.3 PowerShellGet Cmdlet Get-Module 6.2.3.0 Microsoft.PowerShell.Core Cmdlet Import-Module 6.2.3.0 Microsoft.PowerShell.Core Cmdlet New-Module 6.2.3.0 Microsoft.PowerShell.Core Cmdlet Remove-Module 6.2.3.0 Microsoft.PowerShell.Core

最後に

参考サイト

0 件のコメント:

コメントを投稿