Power Automateを利用して、Excelから値を読み取りJamfでMacのコンピュータ名を変更しよう!

台帳のシリアル番号からコンピュータ名を読み取って、自動的にMacのコンピュータ名を変更させたいですよね?
Googleスプレッドシードであれば、GASでPOSTとデータを受信して値を返すということが可能ですが、Excelの場合Office Scirptにはまだ同じような関数はありません。
そのため、Power Automateを利用して実現させたいと思います。

目次

前提条件

以下のライセンスが必要です。

  • Power Automate有料ライセンス
    HTTP要求の受信時トリガーを利用するため、Power Automate有料ライセンス(プレミアムコネクタ)が使えるライセンスを用意してください
  • Jamf Proライセンス

下準備

Excelデータの準備

シリアル番号をPC名を紐付けるためのデータを用意します。
以下のようなExcelファイルを用意し、OneDrive上に配置します。(Share Point上でもOKです)

テーブル化する

Power AutomateからExcelファイルを読み取るためにはテーブル化する必要があるので、以下の手順でテーブル化します。
(Zapierだとテーブル化しなくても読み取れるのですが・・・)

  1. A1セルを選択します
  2. 「挿入」タブをクリックします
  3. 【テーブル】をクリックします
  4. 「先頭行をテーブルの見出しとして使用する」にチェックを入れ、【OK】をクリックします
  5. 以上でテーブル化は完了です。

 

Power Automateでフローを作成

  1. 「作成」→【自動化したクラウドフロー】をクリックします
  2. 【スキップ】をクリックします
  3. 検索欄に「HTTP」と入力し、「要求」→【HTTP要求の受信時】をクリックします
  4. 要求本文のJSONスキーマに以下のように入力します
    {
        "type": "object",
        "properties": {
            "serial": {
                "type": "string"
            }
        }
    }
  5. 【新しいステップ】をクリックします
  6. Excel Online (Business)をクリックします
  7. 【行の取得】をクリックします
  8. 以下のように設定します。
  9. キー値には、「HTTP要求の受信時」から「serial」を選択し、受け取ったシリアル番号を元にExcelの行を検索するように設定します
  10. 【新しいステップ】をクリックします
  11. 検索ボックスに「要求」と入力し、「要求」→【応答】をクリックします
  12. 「本文」に、行を取得で取得した、「PCNAME」を選択します
  13. 「応答本文のJSONスキーマ」に以下のように入力します
    ここでは、PCNAMEのみを返却するようにしていますが、必要な項目があれば定義に追加してください

    {
        "type": "object",
        "properties": {
            "pcname": {
                "type": "string"
            }
        }
    }

     

Jamf用スクリプト作成

Jamf用のスクリプトを作ります。
今回は単純にシェルでURLにデータを送ります。
URLがわかってしまうと、誰でもデータを送れることになるので、Power Automate上で何かアクセストークン的なものがあったら処理を継続させるみたいな形にしたほうがよいかもしれません。

以下のようなスクリプトを作成しました

#!/bin/zsh

serial=`/usr/sbin/system_profiler SPHardwareDataType | /usr/bin/awk '/Serial\ Number\ \(system\)/ {print $NF}'`

URL=$4

BODY='{"serial":"'"$serial"'"}'

computer_name=`curl -s -X POST -H "Content-Type: application/json" -d $BODY $URL`
echo $computer_name

if [[ ${computer_name} != "" ]]; then
    /usr/sbin/scutil --set ComputerName ${computer_name}
    /usr/sbin/scutil --set LocalHostName ${computer_name}
    /usr/sbin/scutil --set HostName ${computer_name}
fi

 

Jamfスクリプトへ登録する

作成したスクリプトをJamfのスクリプトとして登録します。

  1. 右上歯車アイコンをクリックします
  2. 「コンピュータ管理」→【スクリプト】をクリックします
  3. 【新規】をクリックします
  4. 先程作成したスクリプトを貼り付け、保存します。

Jamfポリシーを作成する

  1. 「コンピュータ」→【ポリシー】をクリックします
  2. 【新規】をクリックします
  3. 必要箇所を設定します。今回は以下のようにしました
    (テストするために、実行頻度をOngoingにしています。
    実際はOnce Per Computerとかでいいと思います、トリガーも登録完了とかでいいかと
    DepNotifyから呼び出す場合は以下の設定のままでいいと個人的には思います)

    表示名 set-Serial-to-ComputerName
    トリガー カスタム
    カスタム名 set-serial-to-computername
    実行頻度 Ongoing
  4. スクリプトを登録し、パラーメータ4にPower Automateで表示されたURLを設定します
  5. 【保存】をクリックします

 

テスト

今回はターミナルを利用して、簡単にテストします。
Jamfに登録されているMacのターミナルアプリから以下のコマンドを実行します

sudo jamf policy -event set-serial-to-computername

端末のシリアル番号がPower Automateに送信され、Excel台帳からPC名を取得し、台帳上のPC名が表示されれば成功です
Excel Onlineでデータを変更しもて、すぐにはPower Automateからの取得で反映されないようなので、データ更新後は少しだけ時間を空けてから実行するのがいいと思います

%sudo jamf policy -event set-serail-to-computername
Checking for policies triggered by "set-serial-to-computername" for user "intracker"...
Executing Policy set-Serial-to-ComputerName
Running script setSNtoComputerName...
Script exit code: 0
Script result: PC-01234

 

これで、シリアル番号から自動的にPC名をMac端末に対して設定することができるようになりました。
Zapierでも同じことができますので、Power Automateはないんだけど・・・という場合にはZapier等で設定してみてください。

Intuneからも呼び出せれば対応できそうですね。
Intuneも強制実行コマンドとかあればいいんですが・・・。

 

 

 

 

 

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次