GNU/Linux >> Linux の 問題 >  >> Linux

Linux で PowerShell を活用する:初心者向けガイド

Microsoft PowerShell は従来、Windows 専用の製品と考えられていましたが、現在はそうではありません。 PowerShell v6 の時点で、PowerShell のすべての機能がクロスプラットフォームで利用できるようになり、Linux が最も人気があります。

このチュートリアルでは、Ubuntu に PowerShell をインストールしてゼロから始める方法 (他の Linux ディストリビューションも同様です)、コマンドを実行する方法、さらにはいくつかのモジュールをインストールする方法について学習します。

始めましょう!

前提条件

このチュートリアルには、さまざまなデモが含まれます。フォローしたい場合は、次のものが揃っていることを確認してください:

  • サポートされている任意の Linux ディストリビューション – このチュートリアルでは、Ubuntu 18.04 (LTS) に基づく Peppermint 10 を使用します。
  • root アクセス権を持つアカウント

パッケージ リポジトリの更新

Linux に PowerShell をインストールする前に、まず apt パッケージ マネージャーのリポジトリ リストを更新する必要があります。 Linux の一部のディストリビューションでは、apt パッケージ マネージャーを使用して apt パッケージをインストールします。 PowerShell はその 1 つです。

ダウンロード時に apt が PowerShell パッケージと依存関係を確実に見つけられるようにするには、最初に apt のパッケージ リポジトリ リストを更新する必要があります。これを行うには、[apt update]() を実行します。 .

sudo apt update

Linux への PowerShell のインストール

パッケージ リポジトリを更新したので、次は Linux に PowerShell をインストールします。このチュートリアルでは Ubuntu ベースのディストリビューションを使用しているため、PowerShell をインストールするには 2 つの異なる方法があります。 snap パッケージを使用するか、.NET SDK を介して。

Snap パッケージによる PowerShell のインストール

Ubuntu に PowerShell をインストールする最も簡単な方法は、スナップを使用することです。 Snap は、複数の Linux バージョンとディストリビューションで動作するパッケージです。

スナップ パッケージを介して Linux に PowerShell をインストールするには、ターミナルを開いて snap install を実行します。 sudo の Linux コマンド powershell の snap パッケージ名を使用する権利 .

デフォルトでは、スナップ パッケージはセキュリティ上の理由から範囲が制限されています。 --classic の指定 パラメータを使用すると、セキュリティ サンドボックスの外でシステムに変更を加えることができます。

sudo snap install powershell --classic

.NET SDK による PowerShell のインストール

1. PowerShell スナップ パッケージに最新バージョンの PowerShell が含まれていないことがあります。その場合は、常に更新される .NET SDK ルートをいつでも選択できます。

PowerShell は .NET Core にパッケージ化されているため、.NET SDK をインストールすると、PowerShell も取得されます!

apt を使用して以下のコマンドを実行し、利用可能な最新の .NET SDK をダウンロードしてインストールします。 パッケージマネージャー。この記事の執筆時点で、利用可能な最新の .NET SDK パッケージは v5.0.8 です。ここで利用可能な最新バージョンを確認できます。

sudo apt install dotnet-sdk-5.0

2. dotnet 経由で PowerShell をインストールします。 dotnet tool install を使用したアプリケーション . dotnet tool コマンドは、PowerShell がパッケージ化されている NuGet パッケージを指定します。

--global を指定することで オプション、dotnet PowerShell パッケージを ~\.dotnet\tools にインストールします ディレクトリがシステム PATH にあることを確認して、どこからでも実行できるようにします。

dotnet tool install --global PowerShell 

Linux での基本的な PowerShell コマンドの実行

Linux に PowerShell をインストールしたら、次は何をするのでしょうか?いくつかの基本的なコマンドを実行することから始めましょう。 PowerShell を開始するには、pwsh を実行するだけです PowerShell インタラクティブ コンソールに移動します。

クロスプラットフォームのスクリプト言語である Linux 上の PowerShell は、CMD および sudo apt update などの Linux のコマンド ライン シェルから一般的に知られているすべてのコマンドをサポートします。 . Bash ターミナルを開く必要はありません!

ここから先は、何千もの組み込み PowerShell コマンドを実行できます。 $PSVersionTable を使用して、インストールされている PowerShell のバージョンを確認してください。 . PSEdition が Core として表示されるはずです。 とプラットフォーム Unix です .

PowerShell コンソールでの操作が完了したら、exit を実行して終了します 指図。このコマンドにより、Bash ターミナルに戻ります。

Linux 上の PowerShell の制限

PowerShell をインストールしてコマンドを実行できるからといって、Windows で可能なすべてのことができるとは限りません。結局、Linux はオープン ソースであるため、まったく異なるオペレーティング システムであり、Linux で利用できない機能に対しては、一部のコマンドを利用できません。

Windows -ne Linux

たとえば、Linux にはレジストリがないため、PowerShell ドライブは表示されません。 Get-PSDrive コマンドレットは引き続き使用できますが、マウントされた Linux ストレージ ボリュームとその他の標準 PS ドライブのみが返されます。以下に例を示します。

Get-PSDrive | Format-Table -Auto

Microsoft Windows とは異なり、Linux には Common Information Model (CIM) も Windows Management Instrumentation (WMI) もありません。これらはどちらも、デバイスとアプリケーションの管理に関する情報を Windows オペレーティング システムに提供するのに役立ちます。

以下で、Windows PowerShell コマンドレット Get-CimInstance を確認できます。 Linux の PowerShell では使用できません。

Get-CimInstance -ClassName Win32_BIOS

しかし、 Get-CimInstance を使おうとすると

スケジュールされたジョブはありません

Linux 上の PowerShell のもう 1 つの欠点は、スケジュールされたジョブがないことです。スケジュールされたジョブは、Windows タスク スケジューラを介してバックグラウンドでタスクを実行できる Window PowerShell の便利な機能です。

Windows PowerShell でスケジュールされたジョブを作成するには、登録 する必要があります Register-ScheduledJob 経由のジョブ コマンドレット。 Windows PowerShell で動作するいくつかの Excel ブックをコピーする例を以下に示します。 Register-ScheduledJob コマンドレットが見つかりません。

ジョブをスケジュールすることはできませんが、Start-Job を使用してバックグラウンド ジョブを呼び出すことができます。 指図。 Start-Job コマンドレットを使用すると、PowerShell でバックグラウンド ジョブを実行して、現在のセッションと対話せずにタスクを実行できます。

おそらく、/var/backups 内のすべてのファイルを一覧表示したいでしょう。 ただし、バックグラウンドで実行します。 ScriptBlock で実行するコマンドを作成できます GetAllBackupFiles というジョブを作成します Start-Job で呼び出す

Start-Job -Name GetAllBackupFiles -ScriptBlock {Get-ChildItem /var/backups -Recurse}

バックグラウンド ジョブが開始されると、Retrieve-Job を使用してそのジョブからの出力を受け取ることができます。 -Name を指定してコマンドレット

Retrieve-Job -Name GetAllBackupFiles

Linux で PowerShell モジュールを使用する

Windows PowerShell の重要な概念は、PowerShell モジュールです。 PowerShell モジュールは、Microsoft と PowerShell コミュニティの両方で構築された「パッケージ」として構築されたコマンドのグループです。

インストール済みモジュールの検索

既定では、Linux 上の PowerShell は、Windows と同様に、さまざまなモジュールをインストールします。 Get-Module を実行して、これらのモジュールをすべて見つけます。 以下に示すように、コマンドを実行します。 ListAvailable パラメータは Get-Module を伝えます すべてを返す ファイルシステム上のモジュール。ロードされたモジュールだけではありません。

Get-Module -ListAvailable

以下に、Pester が表示されます。 モジュールは /root/.local/share/powershell/Modules にインストールされます これは、PowerShell モジュールのユーザーの場所です。モジュールのインストール方法については、次のセクションで学習します。

PSModulePath を見ると、モジュールをインストールする各場所を確認できます。 以下に示すように、環境変数。 $env:PSModulePath の値以降 は 1 つの文字列です。チュートリアルでは split を使用しています。 コロン (Windows のようなセミコロンではない) で文字列を分割し、各パスを別の行に表示する演算子。

$env:PSModulePath -split ':'

Linux への PowerShell モジュールのインストール

Linux の PowerShell にはさまざまなモジュールが既にインストールされていますが、さらに多くの機能が必要になる可能性があります。その場合は、PowerShell ギャラリーを活用できます。 PowerShell ギャラリーは、Windows と Linux の両方で動作する数千のモジュールのリポジトリです。

Install-Module の使用 コマンドレットを使用すると、Windows と同じように Linux にモジュールをインストールできます。ただし、最初に Find-Module を使用して探しているモジュールを見つける必要があります .

人気のある Pester テスト フレームワークを使用して、いくつかの Pesters テストを実行したいとします。 Pester はモジュールにパッケージ化されています。 Find-Module を使用して、PowerShell ギャラリーで Pester モジュールが利用可能かどうかを確認します。 コマンドレット。

Find-Module Pester

Find-Module の下に表示されます。 利用可能な Pester モジュールが見つかりました。

Pester モジュールが利用可能であることを確認したら、Install-Module を使用してモジュールをインストールします。 Name を指定するコマンドレット モジュールの。

Install-Module -Name Pester

Install-Module を実行すると 、リポジトリが信頼できないとマークされているため、PowerShell は信頼できないリポジトリについてプロンプトを表示します。テストの場合、この警告は気にする必要がないので、A と入力します

モジュールがインストールされたら、Get-InstalledModule を実行します。 コマンドレットを実行すると、Pester がインストールされ、そのコマンドが使用できるようになったことがわかります。

Get-Command を使用して確認することもできます コマンドレット、Pester 内のすべてのコマンドを見つけることもできます 以下に示すように、モジュール。

Get-Command -Module Pester

Bash から PowerShell スクリプトを実行する

このチュートリアルを締めくくるために、Bash から PowerShell スクリプトを実行して終了しましょう。このチュートリアルでは、PowerShell コンソール内で PowerShell コマンドを対話的に実行してきました。実行する必要がある PowerShell スクリプトがある場合は、PowerShell コンソールにドロップする必要はありません。代わりに、Bash から直接スクリプトを実行できます。

Bash から PowerShell スクリプトを実行するデモを行うには、お気に入りの Linux テキスト エディターを開き、次のコマンドを貼り付けて、ファイルを DrivesInformation.ps1 として保存します。 .このスクリプトは、単純にすべての PS ドライブを列挙します。

Get-PSDrive

pwsh を実行する代わりに、Bash ターミナルで をクリックし、Enter キーを押して PowerShell コンソール内でスクリプトを実行し、Bash から直接スクリプトを呼び出します。これを行うには、pwsh を実行します。 繰り返しますが、今回は、以下に示すように、作成したばかりの PowerShell スクリプトを指定します。

インタラクティブな PowerShell セッション内で直接 Bash ターミナルに表示されるのと同じ出力を受け取ることがわかります。

pwsh /home/tex/DrivesInformation.ps1

結論

これで、Linux で PowerShell を実行する準備が整いました。 PowerShell についてさらに学習し、可能な限りの自動化を開始するのはあなた次第です!


Linux
  1. RHEL 8のインストール方法:完全なステップバイステップガイド

  2. LinuxにDiscordをインストールする方法:ステップバイステップガイド

  3. LinuxにSlackをインストールする方法:わかりやすいガイド

  1. Linuxパーミッションのビギナーズガイド

  2. Void Linuxのインストール方法:完全なステップバイステップガイド

  3. Linuxでのfirewalldの初心者向けガイド

  1. LinuxにWindowsPowerShellCore6.0をインストールする方法

  2. Linuxでのネットワークトラブルシューティングの初心者向けガイド

  3. LinuxのOnePlusOneにOxygenOSをインストールするための完全ガイド