ネプラスのテックブログ。ネットワーク、クラウド、サーバなどのITインフラ情報を中心に発信中。

  1. ネプラス インフラエンジニア採用
  2. テックマガジン
  3. エンジニア
  4. PowerShellのechoの使い方を解説!

PowerShellのechoの使い方を解説!

  • エンジニア
  • テクノロジー
公開日時:   更新日時:
PowerShellのechoの使い方を解説!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    PowerShellのechoとは?


    PowerShellはWindows10に標準で入っている多機能なシェルスクリプトです。Windowsには昔からDOS窓と言われるコマンドプロンプトがあって、その機能を使用する実行形式ファイルをバッチファイルと言いますが、PowerShellはそれが大幅に強化されています。

    PowerShellのechoはコンソールに文字を表示する機能です。文字表示は基本と言えるので、しっかりマスターしましょう。
     

     

    echoを使ってみる

    PowerShellを使うには、スタートメニューのWindows PowerShellのフォルダにあるWindows PowerShellを実行します。するとコンソールのウィンドウが立ち上がります。早速echoを使ってみましょう。

    echo あいうえお

    この様に入力してEnterキーを押すと、コンソールに

    あいうえお

    と表示されます。echoを使うことが出来ました。

    ‘や”で囲っても同じ結果になる

    以下のように出力する文字列を’や”で囲って入力しても、結果は同じく「あいうえお」になります。

    echo ‘あいうえお’
    echo “あいうえお”

    しかし、実はこの2つには違いがあります。それはエスケープシーケンスが有効になるかどうかです。その違いを説明する前に、PowerShellにおけるエスケープシーケンスを説明しましょう。

    PowerShellのエスケープシーケンス

    PowerShellに以下のように入力してみましょう。

    echo あいうnえお

    結果は以下のようになります。

    あいう
    えお

    nがエスケープシーケンスです。はキーボードの@キーをShiftキーを押しながら入力します。nはラインフィードと呼ばれ、改行をするという効果があります。

    PowerShellのエスケープシーケンスは他には以下のようなものがあります。

    r キャリッジリターン。行頭に戻る。
    t タブ。
    a 警告。Windows10では音が鳴る。
    ‘ シングルクォーテーション。
    " タブルクォーテーション。
     バッククォーテーション。
    0 Null。

    ‘と”の違い

    行頭に戻るキャリッジリターンは無意味に感じるかもしれませんが、もともとキャリッジリターンとラインフィードはタイプライターの動きを再現する名残で残っています。ラインフィードのnだけ知っていれば良いでしょう。

    話を戻して、文字列を’で囲うのと、"で囲うのとの違いを説明しましょう。これはエスケープシーケンスを記述するとわかります。以下の実行結果は、

    echo 'あいうnえお’

    以下になります。

    あいうnえお

    'と"の関係

    'で囲うとエスケープシーケンスが機能しないのです。なお以下のように"の場合は、

    echo "あいうnえお”

    以下のように機能するので、”は囲まない場合と同じということになります。

    あいう
    えお

    ちなみに’を”で囲った場合は、

    echo “‘あいうえお'”

    結果は以下のように’をエスケープしなくてもそのまま出ます。

    ‘あいうえお’

    “を’で囲った場合は、

    echo ‘”あいうえお”‘

    結果は以下のように”がエスケープ不要になります。

    “あいうえお”

    変数の展開について

    次は変数の展開についてです。echoで表示する時、文字列に変数をつなげることができます。

    $ue = ‘うえ’
    echo “あい$ue お”

    結果は

    あいうえ お

    になります。以下のように’を使った場合は、

    echo ‘あい$ue お’

    結果は以下になります。エスケープシーケンスの時と同じで、’は変数の内容が展開されずそのまま表示されます。

    あい$ue お

    なおechoで文字列に変数をつなげる場合、変数の後ろにスペースが必要です。そのため今回のケースではどうしても「え」と「お」の間にスペースが入ってしまいます。

    変数の後ろのスペースは除去できない

    スペースを無くしたいならば、例えば以下のようにするしかないでしょう。根本的な解決にはなってないのですが。

    $ue = ‘うえ’
    $ueo = $ue + ‘お’
    echo “あい$ueo”

    結果は以下になります。

    あいうえお

    なお以下のように、”も’も使用しない場合は、

    echo あい$ue お

    以下のようになります。スペースが改行扱いになるということですね。

    あいうえ

    PowerShellにechoというコマンドは無い

    ここまでechoを使用してきましたが、実はPowerShellにはechoというコマンドはありません。エイリアスと言う機能により、echoを呼ぶと別のコマンドが呼び出されていたのです。それを知るには、PowerShellのコンソールで、

    Get-Alias

    と入力します。するとエイリアスの一覧が表示されますが、その中に、

    Alias echo -> Write-Output

    があります。echoと入力すると、Write-Outputというコマンドが呼び出されていたのです。このようにしている理由は、コマンドプロンプトなどの古いシェルでは文字表示コマンドはechoが一般的だったので、それに慣れている人がすぐ使えるようにという配慮です。

    Write-HostとWrite-Outputの違いは?

    echoはWrite-Outputであることがわかりましたが、PowerShellでコンソールに文字を表示する場合、Write-Hostを使う方が多くなっています。理由はWrite-HostはのHostはコンソールを意味していて、それに文字を表示するための専用のコマンドだからです。

    Write-Outputは|のパイプラインで別のコマンドが続く場合は、コンソールではなくそちらに出力します。Write-Hostは続きの|があってもコンソールに出力します。ただしWrite-Outputも|が無ければコンソールに出力するので、その場合はWrite-Hostと変わりません。ここまでの例は|が無いのでコンソールに表示されていました。

    違いのわかりやすい例

    以下はecho(Write-Output)とWrite-Hostの違いの分かりやすい例です。

    echo @(‘あ’,’い’,’う’,’え’,’お’) | Select-String う

    これの実行結果は以下になります。echoが配列を出力してそれをパイプラインでSelect-Stringに渡して、そちらで「う」を選択しています。

    ところが以下の結果は、

    Write-Host @(‘あ’,’い’,’う’,’え’,’お’) | Select-String う

    以下になります。Write-Hostはコンソール出力専用のコマンドのため、パイプラインに出力を渡すことができないということです。

    あ い う え お

    echoでファイル出力をする

    echo(Write-Output)はWrite-Hostと違いコンソール以外にも出力できるので、ファイル出力も簡単にできます。以下はその例です。

    echo ‘テスト’ | Out-File -FilePath ‘c:\test\test.txt’ -append

    echoの出力をパイプラインでOut-Fileコマンドに渡します。Out-Fileは-FilePathで指定されたファイルに出力します。-appendを付けると追記モードなので、書き足されます。ログなどにとても便利に使えます。

    リダイレクトならもっと簡単

    上のようなファイル出力は、リダイレクトを使えばもっと簡単に書けます。以下で上と同じことが出来ます。

    echo ‘テスト’ >> c:\test\test.txt

    不等号の>>がリダイレクトです。>が2つあると追記モードで、1つだと上書きします。ファイル出力処理はC#やJavaやVBAだともっと多くのコードが必要なのですが、PowerShellならとても簡単です。

    echoを活用してPowerShellを使いこなそう

    PowerShellのechoについて解説しましたがいかがでしたでしょうか。echoはエイリアスで本来のコマンドはWrite-Outputなので、そちらを使う方が良いでしょう。
     

     

    FEnetを運営しているネプラス株式会社はサービス開始から10年以上
    『エンジニアの生涯価値の向上』をミッションに掲げ、
    多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
    ネプラス株式会社ロゴ

    ネプラス株式会社はこんな会社です

    秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • インフラ業界に特化

      インフラ業界に特化

      ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。

      業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。

    • 正社員なのにフリーランスのような働き方

      正社員なのにフリーランスのような働き方

      正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。

      プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。

    • 大手直取引の高額案件

      大手直取引の高額案件

      案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。

      Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。

    • スキルアップ支援

      スキルアップ支援

      不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。

      受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など

      ※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。

    • 現給与を保証します!

      100%現給与保証

      前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。

      ※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。

    • インセンティブ制度

      インセンティブ制度

      ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。

      取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。

    • 社会保険・福利厚生

      社会保険・福利厚生

      社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。

      さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    ネプラス株式会社に興味を持った方へ

    ネプラス株式会社では、インフラエンジニアを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    オンライン面接も随時受付中。ぜひお気軽にご応募ください。

    ネプラス株式会社へのご応募はこちら↓
    ネプラス株式会社へのご応募はこちら↓

    新着案件New Job

    CCNA取得者歓迎!案件・求人はこちら