「自動化」タグアーカイブ

PowerShellスクリプトの基本構文まとめ:変数・条件分岐・ループを完全マスター

Windowsの自動化やサーバ運用で大活躍するPowerShell。
「使い始めたいけど、基本構文がよく分からない…」という人向けに、この記事ではPowerShellの基礎構文を一気に整理します。

以下の内容を押さえることで、シンプルなスクリプトはすぐ書けるレベルになります。


✅ PowerShellスクリプトの基本ルール

内容説明
拡張子.ps1
コメント# コメント
大文字小文字区別しない (例: $Value と $value は同じ)
変数宣言$変数名 = 値
実行ポリシー変更Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

💡 セキュリティのため、実行ポリシー設定は理解したうえで操作しましょう。


🧮 変数の基本 

ポイント

  • $ を付けて変数を宣言

  • 文字列中で変数展開できる


🔁 配列(リスト) 


📦 ハッシュテーブル(連想配列) 


✅ 条件分岐(If / ElseIf / Else) 

よく使う比較演算子

演算子意味
-eq等しい
-ne等しくない
-gtより大きい
-ltより小さい
-ge以上
-le以下

🔁 ループ制御

for文

foreach文 


🔄 while / do-while 


📦 関数の定義 


📎 パイプラインとフィルタ

コマンド説明
Get-Processプロセス一覧取得
Where-Object条件絞り込み
Sort-Object並び替え
Select-Object指定列のみ取得

💡 実用例:ファイル一覧を取得して出力


🎯 まとめ

PowerShellの基本構文は次の通り:

  • ✅ 変数 $var = 値

  • ✅ 条件分岐 if () {}

  • ✅ ループ for / foreach / while

  • ✅ ハッシュテーブル @{ Name = "A" }

  • ✅ 関数 function X(){}

  • ✅ パイプライン |

まずは小さな処理から試し、Windows作業をどんどん自動化していきましょう!


❓ よくある質問(FAQ)

Q. PowerShell ISEとWindows Terminalどっち使うべき?
A. 基本は Windows Terminal + VS Code を推奨。補完機能が強いです。

Q. 管理者権限はいつ必要?
A. ファイル操作・レジストリ操作・サービス制御等で必要になります。

Windows 11:タスクスケジューラで定期的にバッチを自動実行する方法

🧭 はじめに

Windows 11では「タスクスケジューラ」を使うことで、定期的にバッチファイル(.bat)を自動実行することができます。
例えば「毎日深夜にバックアップを実行する」「週1回ログを整理する」などの定型処理を自動化することで、業務効率を大幅に向上させられます。

本記事では、初心者でもわかるように タスクスケジューラの設定手順から確認ポイントまで を解説します。


⚙️ 手順①:バッチファイルを準備する

まずは、実行したいバッチファイル(.bat)を作成します。
例として、Cドライブのバックアップを行う簡単なスクリプトを紹介します。


  • xcopy:ファイル・フォルダをコピーするコマンド

  • /E:空フォルダも含めてコピー

  • /Y:上書き確認を省略

このファイルを、たとえば
C:\batch\backup.bat
というパスで保存します。


📅 手順②:タスクスケジューラを起動する

  1. スタートメニューで「タスクスケジューラ」と検索

  2. アプリを起動

  3. 右側の「タスクの作成」をクリック


🕒 手順③:基本情報を設定する

項目内容例
名前夜間バックアップ
説明毎日0時にバックアップ実行
実行ユーザー自分のアカウント(管理者権限推奨)
実行時に使用する権限「最上位の特権で実行する」にチェック

💡 ポイント
バックアップやシステム操作など、管理者権限が必要なタスクは必ず「最上位の特権で実行」をONにしましょう。


⏰ 手順④:トリガー(実行タイミング)を設定

  1. 「トリガー」タブ →「新規」ボタンをクリック

  2. 実行頻度を選択(毎日・毎週・毎月など)

  3. 実行開始時刻を指定(例:0:00)

  4. 必要に応じて「有効」にチェックを入れる

項目設定例
タスクの開始毎日
開始時刻0:00
繰り返し間隔1日ごと
有効チェックON

⚡ 手順⑤:操作(実行内容)を設定

  1. 「操作」タブ →「新規」ボタン

  2. 操作の種類:「プログラムの開始」を選択

  3. 「プログラム/スクリプト」に以下を指定
    C:\batch\backup.bat

💡 補足
引数を渡したい場合は「引数の追加」に記入できます。


🔍 手順⑥:条件・設定タブを確認

条件タブ

  • 「AC電源使用時のみ実行」にチェック → ノートPCなら推奨

  • 「ネットワーク接続時のみ実行」なども用途に応じて設定

設定タブ

  • 「タスクを要求時に実行する」

  • 「タスクが失敗した場合に再試行する」などを有効にすると安定します。


🧪 手順⑦:実行テストを行う

設定後、タスクスケジューラの「タスク一覧」から該当タスクを右クリックし、
「実行」 を選択してテストします。

ログ出力やバッチの動作を確認して問題がなければ、定期実行は完了です。


🧾 よくあるトラブルと対処法

現象原因対処法
実行されないパスが間違っている絶対パスで指定する(例:C:\batch\backup.bat)
管理者権限が必要権限不足「最上位の特権で実行」にチェック
画面に出ないバックグラウンド実行正常動作(出力をログに記録して確認)

💡 応用:ログファイルを残す

バッチファイルの末尾に以下を追記すると、ログを残せます。

>> C:\batch\backup_log.txt 2>&1

これで、エラー内容や実行履歴を確認できるようになります。


✅ まとめ

  • タスクスケジューラを使えば バッチの自動実行 が簡単にできる

  • トリガー(スケジュール)と操作(実行内容)を正しく設定することが重要

  • 管理者権限、パス指定、ログ出力でトラブルを防止

社内DXの第一歩:Power Automateで日報を自動化する方法

「毎日の日報作成が面倒」「報告フォーマットがバラバラで集計が大変」──
そんな課題を解決する第一歩が、Power Automate(旧Microsoft Flow)による日報の自動化です。
ノーコードで業務を自動化できるこのツールを使えば、日報提出を「忘れない・待たない・探さない」仕組みに変えられます。


⚙️ Power Automateとは

Power AutomateはMicrosoftが提供するクラウド型のワークフロー自動化ツールです。
Outlook、Teams、Excel、SharePointなど、Microsoft 365の各サービスと簡単に連携できます。

特徴内容
連携性Microsoft 365アプリや外部サービスとシームレスに接続
自動化対象メール送信、ファイル操作、承認フロー、通知など
難易度ノーコードで操作可能(テンプレートも豊富)
対応環境クラウド(Webブラウザ)およびデスクトップ版あり

📋 日報自動化の全体像

Power Automateを使えば、次のようなフローを構築できます。

この一連の流れを一度設定するだけで、毎日の定型作業を自動化できます。


🪜 ステップ別手順

ステップ①:入力フォームを準備

最も簡単なのは Microsoft Forms の利用です。

設定項目内容例
質問1今日の業務内容
質問2所要時間
質問3明日の予定
質問4特記事項

作成後、「応答をSharePointリストやExcel Onlineに保存」する構成にしておきます。


ステップ②:Power Automateで自動フロー作成

  1. Power Automate ポータル にアクセス

  2. 新しいフロー → 自動化されたクラウド フロー」を選択

  3. トリガーに「スケジュール – 毎日」を設定(例:17:00)

  4. 次のアクションを追加:

    • Teamsメッセージ送信:日報フォームのリンクを社員へ通知

    • Forms応答取得:入力データを収集

    • ExcelまたはSharePointへ追記:履歴管理用

    • Outlookで上司へ自動メール送信:日報集計結果を添付または本文に記載


ステップ③:テスト・動作確認

作成後は「フローテスト」から動作を確認します。
テスト結果に応じて、条件分岐(未入力者への再通知など)を追加するのもおすすめです。


🧠 応用アイデア

応用例内容
未提出者への自動リマインドForms未回答者にTeams DMを自動送信
週報・月報の自動集計Excelのテーブルをグループ単位で集約しメール送信
KPIダッシュボード連携Power BIと連携し、進捗を可視化
フォーマット自動生成Wordテンプレートに埋め込み、PDF出力して保存

💡 導入効果とメリット

観点効果
時間削減毎日の手作業入力・転記を削減(約30分/日×人数分)
品質向上報告フォーマットが統一され、抜け漏れを防止
透明性進捗がリアルタイムで可視化され、管理工数を削減
モチベーション手間の少ない仕組みで社員の心理的負担を軽減

⚠️ 導入時の注意点

  • Microsoft 365アカウントが必要(無料では一部機能制限あり)

  • 共有Excelの同時書き込み制限に注意(テーブル化で回避)

  • 過剰な通知設定は逆効果(適度な頻度に調整)


🚀 まとめ

Power Automateによる日報自動化は、**「DXの小さな一歩」**として最適なテーマです。
最初はテンプレートを活用し、少しずつ自社フローに合わせて改良していくことで、
業務効率化 × 属人化防止 × 可視化 の効果を同時に得られます。

PowerShellでテキストファイルから特定の行だけ抽出する方法

テキストファイルを処理して「特定の行だけ抜き出したい」という場面は、ログ解析やデータ処理を行う際によくあります。PowerShellを使えば、シンプルなコマンドで効率的に抽出可能です。本記事では、PowerShellによる代表的な方法を解説します。


基本的な考え方

PowerShellでは、Get-Content コマンドレットでテキストファイルを1行ずつ取得できます。そこから条件を指定して、欲しい行をフィルタリングすれば目的の行を抽出できます。


方法1:行番号で抽出する

特定の行番号を指定して抽出するには配列インデックスを利用します。PowerShellは0から数えるので注意しましょう。

複数行をまとめて取得することも可能です。


方法2:条件で抽出する(文字列検索)

キーワードを含む行だけを抽出するには Select-String を使います。

この場合、ヒットした行番号と内容が出力されます。内容だけ欲しい場合は以下のように書けます。

 

方法3:正規表現で抽出する

複雑な条件にマッチさせたい場合は正規表現を活用できます。


方法4:範囲指定で抽出する

特定の行範囲を取り出したい場合は Select-Object を利用します。


まとめ

  • 行番号で取得 → 配列インデックス

  • キーワードで取得Select-String

  • 複雑条件 → 正規表現

  • 範囲指定Select-Object

PowerShellを使えば、テキストファイルの解析や必要な行だけの抽出を簡単に自動化できます。ログファイル処理やデータ前処理など、日々の作業効率化にぜひ活用してみてください。

PowerShellでフォルダ内のファイル一覧を取得してCSVに出力する方法

Windows環境でフォルダ内のファイル一覧を取得したい場面は多々あります。例えば、定期的なファイル管理や監査用の記録、またはバックアップ作業のために一覧をエクスポートしたい場合です。
PowerShellを使えば、簡単にフォルダ内のファイル一覧を取得し、そのままCSV形式で保存することができます。

この記事では、PowerShellでフォルダ内のファイル一覧を取得し、CSVに出力する方法を解説します。


基本コマンド

まずは基本となるコマンドです。
以下の例では、C:\Test フォルダ内のファイル一覧を取得し、filelist.csv に出力します。

各コマンドの意味

  • Get-ChildItem "C:\Test"
    指定フォルダ内のファイルやフォルダを取得します。gcidir と省略可能。

  • Export-Csv
    取得結果をCSVに変換して保存します。

  • -NoTypeInformation
    CSVの先頭に不要な型情報行を出力しないようにします。

  • -Encoding UTF8
    CSVファイルの文字コードをUTF-8に指定します(文字化け防止)。


ファイルのみ取得する場合

フォルダ名は不要で、ファイルだけを取得したい場合は -File オプションを指定します。


サブフォルダも含めて取得する場合

サブフォルダ内のファイルもまとめて一覧化するには -Recurse を付けます。


出力内容を絞り込む

CSVに出力する項目を指定することも可能です。例えば、フルパス、サイズ、更新日時 だけを出力する場合:

これにより、余計な情報を省き、必要なデータだけをCSVに保存できます。

実行例イメージ

出力されるCSVファイルをExcelで開くと、以下のように一覧が表示されます。

FullName Length LastWriteTime
C:\Test\document1.txt 1234 2025/09/17 10:30:00
C:\Test\image.png 45678 2025/09/16 15:20:00
C:\Test\subfolder\report.docx 9876 2025/09/15 09:10:00

まとめ

  • Get-ChildItem でフォルダ内のファイル一覧を取得できる

  • Export-Csv を組み合わせることで、簡単にCSVへ出力可能

  • -File-RecurseSelect-Object を使えば用途に合わせて柔軟に一覧化できる

PowerShellを使えば、手作業でリスト化する手間を省き、自動化できるのでぜひ活用してみてください。