ネコの耳に念仏

ネコの耳に念仏

ガンバらない技術ブログを目指します

コマンド実行ログをコンソールとファイルの両方へ出力する方法【PowerShell】

PowerShell コマンドを実行するとき、実行結果ログをログファイルなどへ出力したい場合、下記のようにリダイレクトを利用するのが一般的です。

{実行コマンド} > {出力先ファイル名}

しかしながら、この方法では実行結果ログがすべてログファイルへリダイレクトされてしまい、コンソール画面には何も出力されなくなってしまいます。

そこで今回は、PowerShell の実行結果ログをコンソール画面にも出力しながらログファイルにも出力させる方法を説明します。

やり方

Tee-Object コマンドを利用します。

結論から書いてしまうと、下記のコマンドをコピペしてもらえばOKです。

{実行コマンド} | Tee-Object -FilePath {出力先ファイル名} -Encoding Default -append
パラメータ 説明
-FilePath 出力先ファイル名を指定。
-Encoding ターゲットファイルのエンコードの種類を指定。
既定値はutf8NoBOM
-Append すでに出力先ファイルが存在する場合は追記する。
このパラメータを指定しない場合は強制上書きされる。

Tee-Object コマンドについて

Tee-Object コマンドは、実行コマンドの出力をファイルまたは変数へ保存し、その出力をさらにパイプラインに送信するコマンドです。

前述のコマンド例のように、出力先ファイルを指定したあと、2番目のパスを指定しない場合はコンソール画面に出力されることになります。

Tee-Object コマンドの公式ドキュメントは、下記のページをご参照ください。

参考:Tee-Object (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn

以上

【Azure】Log Analytics Workspace の ID とキーの取得方法【ログアナリティクスワークスペース】

Log Analytics ワークスペース

を取得する方法を説明します。

Log Analytics ワークスペースの ID とキーの取得方法

ID とキーは、下記の手順で取得できます。

  1. Azure ポータルから、対象の Log Analytics ワークスペースの管理画面を開く
  2. 左ペインのリストメニューから「エージェント管理」を選択して開く
  3. 「Log Analytics エージェントの手順」のところをクリックして展開すると、ID とキーが表示される

以上。

ウィンドウグループ化を無効にしてタスクバーのアイコンにカーソルを合わせたときのプレビューでグループを非表示にする【Windows11】

Windows 11 でウィンドウのスナップ機能が強化され、複数のウィンドウが自動でグループ化されるようになりました。

ただし、あくまでも「自動的」なグループ化なので必ずしもユーザーが希望するまとまりになるとは限りません。

また、タスクバーのアプリアイコンにマウスオーバーしたときのプレビュー表示にグループも表示されるようになってしまい、かえって使いづらくなりました。

そこで今回は、ウィンドウのグループ化を無効にする方法を説明します。

ウィンドウのグループ化を無効にする方法

ここでは Windows 11 Home のバージョン 22H2 を例に説明します。

ウィンドウのグループ化を無効化するには、下記のように設定変更します。

  1. Windows の設定を開き、「システム」→「マルチタスク」を開く
  2. 「ウィンドウのスナップ」項目を展開し、「タスクビューのタスクバーアプリの上にマウスカーソルを移動したとき、そして Alt+Tab を押したときに、スナップしたウィンドウを表示する」のチェックを外す

以上

PowerShellで未定義の変数をIF文などの構文で参照するとエラーになるのか?

ふと PowerShell で未定義の変数を IF 文の条件文に含めるとエラーって出るんだっけ?と疑問に思ったので、確認してみた。

結論

先に結論を述べておくと、エラーは出ません。

検証

PowerShell で次のようなサンプルコードを実行する。

if($hoge -eq "fuga"){echo "OK"}else{echo "NG"}

実行結果は下記の通り。

NG

以上。

【C#】ファイルをバイト型配列で読み込んでBase64エンコードしてテキスト表示する方法

任意のファイルをバイト型配列で読み込んで、Base64 エンコードした文字列を作成します。

実装方法

たとえば、ファイルの中身に下記のようなテキストが保存されている「example.txt」というテキストファイルを用意する。

吾輩は猫である。名前はまだ無い。

「example.txt」を C# プロジェクト直下に格納して、下記のコードを実行します。

// ファイルを開く
FileStream fs = new FileStream(@"./example.txt", FileMode.Open, FileAccess.Read);

// ファイルを読み込むバイト型配列を作成する
byte[] bs = new byte[fs.Length];

// ファイルの内容をすべて読み込む
fs.Read(bs, 0, bs.Length);

// 閉じる
fs.Close();

// バイト型配列をBase64エンコード
string str = Convert.ToBase64String(bs);

// 結果を表示
Console.WriteLine(str);

コードの実行結果は次の通り。

77u/5ZC+6Lyp44Gv54yr44Gn44GC44KL44CC5ZCN5YmN44Gv44G+44Gg54Sh44GE44CC

以上。

Azure PowerShell (Az モジュール) のインストール方法

PowerShell ギャラリーから Azure PowerShell (Az モジュール) をインストールする方法を説明する。

インストール手順

PowerShell のバージョン確認

Azure PowerShell をインストール可能な PowerShell かどうか確認する。

管理者権限で PowerShell を開き、下記のコマンドを実行してバージョンを確認する。

$PSVersionTable.PSVersion

スクリプトの実行ポリシーの変更

PowerShell スクリプトの実行ポリシーをRemoteSignedにしておく必要がある。

現在の実行ポリシーを確認するには、下記のコマンドを実行する。

Get-ExecutionPolicy

実行ポリシーをRemoteSignedへ変更するには、下記のコマンドを実行する。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
  • -Scope Process : 現在開いている PowerShell のプロセスのみに実行許可を与える
  • -Force : 強制的に実行する

インストールの実行

下記のコマンドを実行して、Azure PowerShell (Az モジュール) のインストールを実行する。

Install-Module -Name Az -Repository PSGallery -Force

5~10分くらいかかる。

インストールの確認

正常にインストールされたかを確認するには、下記のコマンドを実行する。

Get-InstalledModule -Name Az

また、インストールして使用できるようになったコマンド一覧を確認するには、下記のコマンドを実行する。

Get-Command -Module Az.*

疎通チェック

次のコマンドを実行して、Azure へログインできるかどうか確認する。

Connect-AzAccount

参考