キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

現場で書き換え…

ログインスクリプトでエラー

前回、マイクロソフトのサンプルに問題があって、修正が必要と書いたのだけれど、現場でテストしてみると、さらにエラーが発生する。


strGroups = LCase(Join(CurrentUser.MemberOf))

今度は、この記述だ・・・。
どうやら、ユーザのデータを引いた時のOUやグループの設定状況でデータ個数が配列で返らない場合に、うまくjoinできていないらしい。
そこで、

'strGroups = LCase(Join(CurrentUser.MemberOf))
if IsArray(CurrentUser.MemberOf) then
   strGroups = LCase(join(CurrentUser.MemberOf))
else
   strGroups = LCase(CurrentUser.MemberOf)
End if
てな感じで、配列かどうかで処理を分ける必要があるということが判明。
その場で、書き換えてテストしなければならない程の、逼迫ぶりで…。疲れましたゎ。

でも、これで何とか動作するようになり、OKです。
念の為、全て記述しておこう。
Const MANAGER_GROUP = "cn=manager"
Const SUPPORT_GROUP = "cn=support"
'Const STAFF_GROUP   = "cn=staff"
Set wshNetwork = CreateObject("WScript.Network")
'homeはプロファイル設定で掴ませることにするのでコメントアウト
'wshNetwork.MapNetworkDrive "i:" , "\\dc01\home$\" & wshNetwork.UserName
wshNetwork.MapNetworkDrive "s:" , "\\dc01\staff"
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
'strGroups = LCase(Join(CurrentUser.MemberOf))
if IsArray(CurrentUser.MemberOf) then
   strGroups = LCase(join(CurrentUser.MemberOf))
else
   strGroups = LCase(CurrentUser.MemberOf)
End if
If InStr(strGroups, MANAGER_GROUP) Then
    wshNetwork.MapNetworkDrive "m:" , "\\dc01\manager"
'    wshNetwork.MapNetworkDrive "n:" , "\\dc01\support"
End If
If InStr(strGroups, SUPPORT_GROUP) Then
    wshNetwork.MapNetworkDrive "n:","\\dc01\support"
       
End If

度重なる仕様変更

ちなみに、先のスクリプトは、前回とは後半部分が異なっている。
これは、作業途中で現場から、このドライブは共有して欲しくないとか…。
この場で、言うかよ〜! って話です。

まあ、今回導入したところは、基本的にネットワークのちゃんとした利用の仕方を知らないままなんとなく使ってきたという所もあり、いろいろな話をする中で、だったら…こうして欲しい。とか、こんな風に使えれば…みたいな話が出てくるので、利用している人たちの感性はまともと言えるかな。
結局、これまで管理していた人が、そういった情報を吸い上げず、こちらから提供しないことからうまく回っていなかったのかなぁと…。

そんなことを思いながらも、依頼主に確認をし、ドライブマッピングとユーザの関係を変更することに。導入作業前にも確認しているんだけどね〜。

ついでにバッチも実行

ログオンスクリプトには、もう1つ加えておくことにした。
もちろん、サーバは時刻合わせを行なっているんだけど、クライアントがずれてもらっては困る。といってデフォルトの時刻合わせは馬鹿すぎる。

そこで、nettime.batを作成。中身は簡単なもんです。以下の通り。
net time /domain:%userdnsdomain% /set /y
全クライアントが、ログイン時に実行するように設定しておきます。
これで、サーバとの同期は完了するので、困ることはございません。

いろいろと、検討したけどなるべくシンプルに運用したいので、この程度でやめておこうと思っています。

ふう、ドキュメントの作成もあるので、時間取られてなかなかBlogの更新ができませんなぁ
ちうことで、もう少し、今回手間取ったところあたりをまとめておきたいと思います。




コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Ubuntu24.04 でGUIが死んだ