ラベル Microsoft Teams の投稿を表示しています。 すべての投稿を表示
ラベル Microsoft Teams の投稿を表示しています。 すべての投稿を表示

無料版のMicrosoft Teamsのリモート操作でサーバーをメンテナンス

前回、紹介させて頂きました、「無料版のMicrosoft TeamsでゲストユーザとWeb会議をする方法」の応用例です。

在宅勤務や、出張自粛が励行される中でも、お客さんのサーバをメンテする必要がでることもあると思います。
また、サーバのメンテにおいては、サーバー室に出入りせずに、リモートデスクトップで行うケースも多いと思います。
今回は、Microsoft Teamsと、リモートデスクトップを活用して、リモートでサーバメンテを実施する方法についてです。

接続のイメージは以下のとおりです。


メンテ対象サーバーへの接続の流れは以下の通りです。





ポイントは、⑧の部分でウィンドウを小さくしておく点です。
これにより、被サポート側は、自分のPCで別作業を行いながら、サポートを受けることができます。
また、現段階では、接続上限時間は8時間となっていますので、長時間のメンテナンスでも活用できそうです。

コロナ騒動前は、セキュリティのしっかりしたリモートサポートツールを導入しようとすれば、
年間数十万円のライセンス料も珍しくなかったのですが、今回の方法だと無料です。

コロナ騒動での外出禁止のなかでの「事業継続」、「移動時間の節約」と重宝しております。


無料版のMicrosoft TeamsでゲストユーザとWeb会議をする方法

 


Web会議開始までの流れ

大きく以下の流れで進めていきます。

  • 1.ホスト側でゲスト招待用のプライベートチームを作成
  • 2.ホスト側からゲストユーザを会議に招待
  • 3.ゲスト側が招待リンクをクリックして会議に参加
  • 4.ホスト側が参加を許可
  • 5.会議を開始

詳細手順


1.ホスト側でゲスト招待用のプライベートチームを作成

  • 新規チームを作成。
  • 「初めからチームを作成する」をクリック。
  • 「プライベート」をクリック。
  • チーム名を入力し、「作成」ボタンをクリック。
  • 「スキップ」ボタンをクリック。

2.ホスト側からゲストユーザを会議に招待

  • 「チーム」をクリック
  • 先程、作成した「ゲスト用チーム」を選択。
  • 「今すぐ会議」ボタンをクリック。
  • 打合せのタイトルを入力。
  • 「今すぐ会議」ボタンをクリック。
  • 「参加情報をコピー」ボタンをクリック。

3.ゲスト側が招待リンクをクリックして会議に参加

  • クリップボードに招待用のリンクがコピーされるので、HTMLメール等でゲストユーザにリンクを送付。
  • ゲストユーザがリンクをクリックすると、Teamsが起動します。
  • ブラウザ起動か、アプリ起動かを選択。

※アプリで起動すると、リモート操作が可能になります。

※リンクをクリックしても下記の起動画面が表示されない場合は、こちらを参考にして下さい。

  • ゲストユーザ名を入力
  • 「今すぐ参加」ボタンをクリック。

4.ホスト側が参加を許可

  • ゲストからの参加依頼が表示されますので、許可して下さい。

5.会議を開始

  • これでゲストユーザとWeb会議を開始できます。

Microsoft Teamsにエラーログを出力するLog4Net Custom Appenderを作ってみた。


Custom AppenderクラスはAppenderSkeletonを継承し、Append()メソッドをオーバライドして作成。
IncomingWebhooksのURLをlog4net.configから取得できるようにプロパティを作成しておく。

●Custom Appenderクラスは以下のとおり。
 MSTeamsUtil()の実装についてはこちらを参考にして下さい。
public class MSTeamsAppender : AppenderSkeleton {

    //Microsoft TeamsのコネクタURL
    public string IncomingWebhookURL { getset; }  

    // Microsoft Teamsにログ追記
    protected override void Append(LoggingEvent loggingEvent) {
        var mstu = new MSTeamsUtil();
        mstu.PostPlainMessage(IncomingWebhookURL, RenderLoggingEvent(loggingEvent));
    }
}
●log4net.configの設定方法は以下のとおり
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="MSTeamsAppender" type="FxCommonLib.Log4NetAppender.MSTeamsAppender, FxCommonLib">
      <incomingWebhookURL value="https://outlook.office.com/・・・" />
      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%username %d [%t] %-5p %c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="MSTeamsAppender" />
    </root>
  </log4net>
</configuration>
こんな感じでログが投稿されます。

Microsoft TeamsにC#でメッセージ投稿してみた


最近、無償提供されたMicrosoft Teamsにプログラムからメッセージ投稿してみたいと思い、実装してみた。
システム監視、センサなどから情報投稿など、いろいろ利用できそう。

まずは、Microsoft TeamsのIncoming Webhook APIのURLを取得。
取得方法の詳細はこちら

○Microsoft Teamsに平文メッセージを投稿するためのユーティリティメソッド
public class MSTeamsUtil {
    // Microsoft Temasに平文メッセージを投稿
    public void PostPlainMessage(string webhookURL, string message) {
        using (var client = new WebClient()) {
            var param = new Dictionary();
            // Textパラメータは必須
            param["Text"] = message;
            var json = JsonConvert.SerializeObject(param);

            client.Headers.Add(HttpRequestHeader.ContentType, "application/json;charset=UTF-8");
            client.Encoding = Encoding.UTF8;
            client.UploadString(webhookURL, json);
        }
    }
}
○利用側のソース
public class MSTeamsUtilTest {
    //取得したImcoming WebhooksのURLをセット
    private string _webhookURL = "https://outlook.office.com/webhook/・・・";

    public void PostPlainMessageTest() {
        var mst = new MSTeamsUtil();
        mst.PostPlainMessage(_webhookURL, "hoge hoge");
    }
}
最初、HttpClientで実装しようとしたが、PostAsAsync()実行時にエラー(ExceptionもCatchできない状態)となった。
エラーの原因は、よく解らないので、追々調査してみることに。

代わりにWebClientに変更して実装してみるとメッセージ投稿に成功した。

なお、HttpClientを利用する時はリクエストの度にインスタンス生成・破棄してはならにとのこと。
TCPコネクションが都度、張られ、パフォーマンスを低下させるとのこと。

WebClientではリクエストの度にインスタンス生成・破棄してもTCPコネクションが使い回されるため問題ない。

【参考】
C# HTTPクライアントまとめ
不適切なインスタンス化のアンチパターン

厳選 Visual Studioの便利なショートカット

  エラー箇所にジャンプ 「Ctrl + Shift + F12」 ブレークポイント 設定/解除 「F9」 有効化/無効化 「Ctrl + F9」 ViEmu特有 「:ls」:バッファナンバーのリストを表示。 「:b2」:バッファ2のファイルを開く。 「:n」:次のバッファのファ...