社内でヘルプデスクするときにリモートでやる
PC操作関連でヘルプデスクに入るとき相手の場所の行くのも面倒くさいわざわざ行くより時間の節約になるので、リモートで出来たらいい
便利なことにWindowsには標準で「リモートアシスタンス」なる遠隔操作用の機能が備わっている。
だがしかし、ヘルプデスクに来るように人に「リモートアシスタンス」を起動させて招待してもらう操作ができるわけない。
ヘルプデスクのために「リモートアシスタンス」を起動させるためにヘルプデスクに行かなくてはならない。
堂々巡りじゃん。
出来るだけ簡単に出来ないか
色々と考えた結果、『「リモートアシスタンス」を起動して「招待」する』自体もリモート操作しちゃえばいいとなった。
事前準備
- 相手PCと操作元PCの双方からアクセスできる共有フォルダを用意する。
- 相手PCに対してPowerShellセッションが張れるようにしておく。
- セッションで使うユーザー権限で個々のユーザーフォルダーに書き込み権限を与える。
- もちろんリモートアシスタンスを出来る設定にしておく。
相手のデスクトップに接続用ショートカットを作る
起動して招待操作が出来なくても、さすがにデスクトップにあるアイコンで起動するくらいは出来るはず。
ということで、リモートアシスタンスを起動するためのショートカットをデスクトップに作ってしまう。
まずは、相手PCにリモートセッションを繋ぐ。
$computername = "" #接続コンピューター名
Enter-PSSession -Session (New-PSSession -ComputerName $computername)
この時に使うアカウントはリモートセッションが出来るのはもちろん「個々のユーザーフォルダーに書き込み権限」があるアカウントを使う。
そしてリモートアシスタンスの接続準備をする
$domain = "localdomain" #ドメイン名
$userid = "butyou" #接続先ユーザーID
$password = "hage" #リモートアシスタンスの接続パスワード
$msrcIncidentPath = "\\share\remote\remote.msrcIncident" #リモートアシスタンス接続用ファイル(.msrcIncident)の保管場所
$userid = (New-Object System.Security.Principal.NTAccount($domain,$userid)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$userprofile = Get-WmiObject -Class win32_userprofile | Where-Object({$_.SID -eq $userid})
$filePath = $userprofile.LocalPath + "\Desktop\リモートアシスタンス起動.cmd"
$msra = 'echo off'+"`r`n"+'start Msra.exe /saveasfile '+$msrcIncidentPath+' '+$password+"`r`n del "+$filePath
Set-Content -Path $filePath $msra
説明
$domain = "localdomain"
$userid = "butyou"
接続先ユーザーIDとドメイン名、接続用のファイルをユーザーのデスクトップに置くのでユーザーを指定する
$password = "hage"
リモートアシスタンスの接続パスワード ※相手に見えるのでこんなパスワードにしてはいけない
$msrcIncidentPath = "\\share\remote\remote.msrcIncident"
リモートアシスタンス接続用ファイル(.msrcIncident)の保管場所、相手先と操作元双方でアクセスできる場所が必要
$userid = (New-Object System.Security.Principal.NTAccount($domain,$userid)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$userprofile = Get-WmiObject -Class win32_userprofile | Where-Object({$_.SID -eq $userid})
$filePath = $userprofile.LocalPath + "\Desktop\リモートアシスタンス起動.cmd"
ユーザーのデスクトップのパスを取得して「リモートアシスタンス起動.cmd」というファイルを作るためのパスを生成
$msra = 'echo off'+"`r`n"+'start Msra.exe /saveasfile '+$msrcIncidentPath+' '+$password+"`r`n del "+\$filePath
「リモートアシスタンス」起動用のコマンド、最後に自身を削除する
Msra.exeのオプションで接続用ファイルの保存場所とパスワードを指定しておく
Set-Content -Path $filePath $msra
リモートアシスタンス起動.cmdにコマンドを書き出す。
リモートアシスタンスを起動させる
-
リモートアシスタンス起動.cmdを実行してもらう
『デスクトップに「リモートアシスタンス起動」のアイコンで出来ているのでダブルクリックして』とか伝えて起動してもらう。
相手側に「Windows リモートアシスタンス」の画面が開くのでそのまま待ってもらう。
※この時接続用パスワードが見えているので変なパスワードにしてはいけない。 -
リモートアシスタンス接続用ファイル(.msrcIncident)の保管場所にある.msrcIncidentを開く
パスワードは設定したパスワードを入れる -
相手側に接続確認が出るので許可してもらう
-
接続完了
必要に応じで「制御の要求」もする
この方法で、相手側は
- デスクトップの「リモートアシスタンス起動」を起動させる
- リモートアシスタンスの許可をする
- 場合によって制御の許可をする
だけでリモートアシスタンスが可能になる。
実際は?
何回か実際実行していますが
- 比較的スムーズにいく
- デスクトップにファイルを置きすぎて新たに出来たファイルが行方不明
- とにかく来てと言われて行くしかない
等、完璧ではないです。
また、リモートセッションの設定とかいろいろ面倒な部分もあったりで、
準備の手間のわりに効果があるのか不明な状態になってたりします。