Linux 上の Powershell - 初期の味覚
むかしむかし、私は Powershell に関する記事を書き、Linux に似た特性を賞賛しました。みんなの歓喜のために、私はその中に素敵なアニメーションさえ持っていました.数年後、Microsoft は Powershell をオープンソースにして Linux で利用できるようにすることを決定し (!)、現在は初期のテスト用に利用できます。
私は多くの理由でこのアイデアが好きです。これにより、特に Windows 用の Bash もあるため、開発とシステム メンテナンスにおいてより共通の基盤が得られるため、努力がうまく反映されていることがわかります。長期的には、これにより 2 つのオペレーティング システムがより効果的に連携するようになり、真の勝者は管理者、開発者、そしてエンド ユーザーになるでしょう。それがどのように機能するか見てみましょう。
Powershell のセットアップ
私のテスト システムは CentOS 7.2 Xfce ボックスで、サポートされている Linux インスタンスの 1 つです。 Microsoft は現在、Ubuntu、その 2 つの LTS 世代、および CentOS のインストーラーを提供しています。ダウンロードするパッケージを見つけるのは少し複雑ですが、セットアップはかなり簡単です。 yum を使用してローカルにインストールし、コマンド ラインから起動します。
yum インストール powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm
今何?
私は本当に上級の Powershell ユーザーではありません。しかし、これはシェルなので、構文を学んで使い始めるだけで済みます。さて、それはBASHなどを置き換えることができますか?そうではありませんが、それは重要ではありません。とにかく、それがどのように機能するかを理解するために、いくつかの基本的なコマンドを叩き始めました。
最初は、この使用モデルは Linux ユーザーにとって少し直感に反するかもしれません。しかし、要点は同じままです。 Powershell が現在実現されている方法の 1 つの欠点は、カラー コードです。白地に黄色はうまく機能しないため、別のターミナル テーマを使用することをお勧めします。
うまくいかない場合は、help
一部のコマンド (コマンドレット) には短いバージョンもあります。たとえば、Get-ChildItem は、UNIX の find と同等の機能の直感的ではない名前であり、gci と省略されることもあります。これは、最初は少し混乱するかもしれません。しかし、それほどではありません。
gci -path /* -include "igor" -recurse
混乱を招く可能性があるもう 1 つのことは、ルートはもちろん末尾のスラッシュでマークされていますが、パスに依存するコマンドのほとんどを正しく機能させるには、スラッシュの後に実際にアスタリスクを追加する必要があることです。図に行きます。それでも、私はあなたと同じくらいベビーステップを踏んでいます。
それはすべてそこにあります。ルック アンド フィールがわずかに異なり、名前も間違いなく異なりますが、問題なく動作するようです。シェルはかなり安定していました。 1 つの例外は、非常に長い再帰的なファイル検索の時間を測定しているときに Powershell がハングしたことです。停止しただけですが、実行を中断することができました。
エラー
Powershell は非常に冗長でエラーが発生しやすく、Windows の場合と同様に赤い色と、エラーが非常に長いテキスト ブロックになるため、警戒しているように見えるかもしれません。しかし、私たちは、コマンド ラインでのファイル検索中にアクセス許可が拒否されたというエラーなど、問題のないことを話しているのです。
次に、別の例を挙げると、measure-command コマンドレット (ある意味で Linux の time に相当) では、引数を中かっこで囲む必要があります。これらを見逃すと、かなりパニックに見える大きなエラーが発生しますが、実際にはまったく無害です。同じことが他の多くのコマンドレットにも当てはまります。
これはエラーの上半分にすぎません。もっとあります。
Fedora ユーザーはどうですか?
Microsoft が Ubuntu および CentOS 用の Powershell をリリースしたことは知っています。 Fedoraが分類するかどうか疑問に思っています。実際、私は不思議に思っていません。テストしました。結局のところ、この小さな実験は私が望んでいたほどスムーズではありませんでした。インストール直後に Powershell を実行しようとすると、おいしいエラーが発生しました:
パワーシェル
CoreCLR の初期化に失敗しました。HRESULT:0x80131500
これはかなり一般的なエラーであり、このトピックに関するかなり長い議論が GitHub で入手できます。ただし、盲目的に提案に従うのではなく、問題が libicu の依存関係にあることを最初に確認したかったのです。つまり、私は strace の機能を利用しました。これは、増え続けるデバッグ用ツールの中でも数少ないツールの 1 つです。
open("/usr/lib64/libicuuc.so.50", O_RDONLY|O_CLOEXEC) =-1 ENOENT (そのようなファイルまたはディレクトリはありません)
実際、不足しているライブラリがいくつかあります。問題は、このパッケージは Fedora で利用できますが、Powershell が期待するバージョンよりも新しいバージョンであるということだけです。シンボリック リンクを作成して問題を回避しようとしましたが、これは少し役に立ちました。
ln -s /usr/lib64/libicui18n.so.56 /usr/lib64/libicui18n.so.50
最終的に、エラーは一般的な起動の問題から、共有オブジェクト内のシンボルの問題に変わりました。そして、これはあなたが恣意的に解決できないものです。
パワーシェル
powershell:シンボル ルックアップ エラー:/opt/microsoft/powershell/6.0.0-alpha.9/System.Globalization.
Native.so:未定義のシンボル:uloc_getDefault_50
解決策は、libicu の古いバージョンをダウンロードし、どこかに展開してから、Powershell が最初に libicu の依存関係を見つけて選択できるようにライブラリ パスを設定することです。例:
export LD_LIBRARY_PATH=
結論
ここにいます。 2016 年になり、Windows で BASH をネイティブに実行でき、Linux で Powershell をネイティブに実行できます。ボブはあなたの叔父であるだけでなく、あなたもボブの叔父です!私はこの開発に満足しています。長期的には、すべての人に利益をもたらすだけです。
Powershell は、スクリプト ツール、言語、およびフレームワークとしてすぐに選択できるものではありませんが、メリットがあり、マルチ OS 環境を維持する必要がある人にとっては、管理作業が大幅に簡素化される可能性があります。初期のアルファ ビルドはテスト用に十分に安定していますが、特にルート権限を使用せずに実稼働システムで大量のテストを行うことは強くお勧めしません。安全な側にいるだけです。全体として、まったく問題ありません。とにかく、行ってください。キーボードをいじる時間です。
乾杯。
-
Windows 11 初期レビュー - 光沢があり、非効率的で、わかりにくい
Windows 11 を適切にレビューする時が来ました。前回の記事では、ハードウェア要件、TPM などについて説明し、Windows 11 のプレビュー ビルドをインストールする際のさまざまなハードルや問題に対処するためにかなりの時間を費やしました。 AMD Ryzen 5 プロセッサを搭載したテスト ラップトップと、第 8 世代 Intel プロセッサを搭載したラップトップの仮想マシン内でセットアップ プロセスを試しました。結局、うまくいきました。 さて、Windows 11 が実際に何をするのか見てみたいと思います。これは初期のレビューです。したがって、今日目にするものはすべて変更される
-
Windows 10 エクスプロイト保護 - チュートリアル
Windows 10 Fall Creators Update (ビルド 1709) のリリースにより、最も優れた洗練された Enhanced Mitigation Experience Toolkit (EMET) が利用できなくなったか、このオペレーティング システムにインストールできなくなりました。代わりに、これらの軽減策は Windows 10 の不可欠な部分になりました。 私は EMET の大ファンであり、すべての Windows マシンで EMET を使用しているため、Windows 10 で新しい軽減策を展開して調整する方法について、詳細で実用的かつ実際の使用ガイドを作成するこ