• 締切済み

ログオンスクリプトを使ったプログラム自動配信について

毎度お世話になっています。よろしくお願いいたします。 会社でサーバの管理者をしています。OSはWindows Server 2003でActiveDirectoryを構築して管理しています。クライアントはWindows 2000/XP合わせて100台前後です。 SQLサーバのフロントエンドプログラムとして、各PCにAccess2003で作成した業務用プログラムをログオンスクリプトで自動配信したいと考えています。最初に私が作成したバッチファイルでの配布条件としては ○ サーバ上にある配信元プログラム(A)とクライアントにある配信先プログラム(B)の更新日時を比較して、(A)が(B)より新しい場合、配信する。それ以外の場合は配信しない。 という条件で、 「xcopy \\{サーバ名}\{(A)の保存場所}\(A).mdb %systemdrive%\{(B)の保存場所}\ /D /E /Y」 というバッチコマンドを使用して配信していました。 しかし、(B)は立ち上げた後で終了すると更新日時が更新されてしまうことが判明((B)が終了した日時に変更される)しました。そのため、上記のバッチでは毎日業務をしていると、たとえ(B)のバージョンが古いままでも(A)が配信されない事態になってしまいます。 これを解消するうまい手段がありましたら、参考になるHPの紹介や御意見・見本となるスクリプトの提示などをお願いいたします。 条件としては「バッチファイルかWSHで実現できること」です。私自身、WSHはあまり分からないのですがバッチでできない高度な操作ができるのでぜひ覚えたいと思います。 以上、よろしくお願いいたします。

みんなの回答

回答No.3

ファイル名にバージョン番号をつけてそれで判断させるのはどうでしょう? ファイル名をあいうえおVer01.mdbなどとしておいて、バージョンアップした場合はあいうえおver02.mdbと名前をつけます。 ファイル名の下二桁を比較してサーバ上のほうが新しければ(大きければ)コピーして、古いほうは消す、というスクリプトを組む。 バージョン管理もできるのでは。 ファイル名が変わっては困るというのであれば無理ですが。 no1.さんのやり方もいいかと思います。

  • Donotrely
  • ベストアンサー率41% (537/1280)
回答No.2

(B)は見るだけですよね? 冴えない方法ですけど、簡易になんとかするなら、 ZIPで梱包したものを配信するというような手もあります。 もちろん拡張子はZIPです。 但し、バッチのコマンドからZIP梱包するには プログラムをどこかから入手してインストールする必要がありますけど。

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.1

真っ向勝負でなくてちょっと思いついた回避策ですが、バージョンの指標となる小さなファイル(テキストファイルでも何でも良い)を用意して、Accessのファイルと一緒に配布するのはどうでしょうか? もちろん、一緒に配布するファイルは誤って消されないようにユーザから見えないところにコピーします。 で、そのファイルの情報を元にVer.A > Ver.B が判別できれば指標ファイル共々AccessをPCに配布する、と。 指標ファイルにどうやって情報を持たせるかは考えてみてください。ファイル名に依存させても良いし、ファイル内に書き込んでも良いし。 # for文を使うなどすればバッチでもある程度ファイルの中身を操作できますし。 がんばってください。

関連するQ&A

  • ログオンスクリプトが動かない

    ログオンスクリプトが動くように設定してあるのですが、 ログオン時に正常にバッチファイルが実行されている時と バッチファイルが実行されない時があります。 サーバはWindowsNT4.0 SP6です。 クライアントはWindowsXP Proです。 ログオンスクリプトには、ドライブの割り当てのみが 書かれています。 同じネットワークの別のOS(Win98、WinNT WS)では問題なく動作します。 実行されなかった場合、ネットワークから直接バッチファイルを、 実行すると正常にドライブが割り当てられます。 あと、サーバのサービスパックもインストールを もう一度、おこなってみましたが、変化無しでした。 毎回、正常にログオンスクリプトを実行したいので 解決法をご存知の方、ご回答よろしくお願いします。

  • サーバーの共有フォルダから・・・

    質問させてください。 現在、社内の基幹システムのプログラムをサーバに保存しています。 この基幹システムのプログラムは、社内開発をしまして、頻繁にバージョンを更新しています。 バージョンが変更される度に、クライアントはサーバの配信用に共有されたフォルダからコピーを行って、プログラムを更新しています。 現在は、各クライアントPCにスタートアップでコピーバッチを動かしてサーバからファイルのコピーをさせていますが、バッチの設定ミスや、無線LANPCで、ネットワーク確立前にバッチが走る等、コピーが完璧に行えない状態です。 こういった方法以外で、クライアントにプログラムを配信(もしくはサーバのフォルダと同期するような)出来る良い手法はありませんでしょうか?アクティブディレクトリ環境なので、グループポリシーを使ってリダイレクトも考えましたが、逆にクライアントからサーバ側が更新されてしまう可能性もあるので断念しました。

  • 特定のプロセスが実行中か調べるスクリプトの書き方

    WindosでPowerShellやWSHやDOSコマンドなどありますが 2008 サーバーで一般的なスクリプトを書くには何を使えば良いでしょうか? 書きたいスクリプトは、ある.NETのプログラムAがあり、 Aが実行(常駐)とうかプロセスがない場合は実行され、 プロセスがある場合は実行しないというスクリプトを書きたいです。 どのように作ればよいでしょうか?   

  • ログオンスクリプトをポリシーで

    server2003&クライアント(XP、2000)なのですが ユーザープロファイルのログオンスクリプトに.jsの ファイルを入れると上手く起動するんですが組織単位(OU)のポリシーに入れて起動させたいんです。 ユーザー構成---Windowsの設定---スクリプト---ログオン 又は ユーザー構成---管理用テンプレート---システム---ログオン---ユーザーのログオン時に実行するプログラムを指定する に.jsファイルを入れてみたんですがクライアントにログオンしても動きませんでした。 すみませんが教えてください。

  • WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

    WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

  • PHPをバッチスクリプトのように実行する方法

    PHPをちょっと勉強してみようと思っています。 言語仕様をさらっと勉強したいだけなので Webサーバーを立ち上げるまではしたくないと思っています。 で、PHPをバッチスクリプトのように実行したいと思っています。 PerlやWSH(JScript, VBS)、シェル、Winコマンドバッチ等のように。 しかし、少し調べた限りではPHPをバッチのように起動する方法は分かりませんでした。 PHPをバッチスクリプトのように実行する方法はありますでしょうか? 存在しないのでしょうか?もしあるのならその方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ログオンユーザを簡単に切り替え

    Windowsでログオンしているユーザの切り替えが簡単にできる方法を探しています。 経緯として、ユーザ毎に仕事の役割を決めており、1人で2つのユーザを切り替えて使い分けています。仕事の割り込みが頻繁に発生するので毎回ユーザ名とパスワードを入力するのが面倒に感じていることから今回質問しました。 やりたい事は、バッチかスクリプトを作っておき、ショートカット等で一発切り替えができればと思っています。 ■現在の切り替え手順 1.[Windows]+[L] または [Ctrl]+[Alt]+[Del] 2.ユーザの切り替えを選択 3.ユーザ名を入力 4.パスワードを入力 ■目的の切り替え手順 1.バッチまたはスクリプトを実行 ※ユーザAならBになるバッチ、ユーザBならAになるバッチを実行 ただ、パスワードだけは毎回手入力でも構わないと思っています。こういう事は可能でしょうか。よろしくお願いいたします。 条件: ・OSはWindows 7 Professionalを使用 ・ユーザの簡易切り替えは有効化にしない ・特定のユーザ権限で特定のプログラムを実行するわけではない ・ユーザはA、Bともにドメインユーザ

  • 静的IPをDHCPへログオンスクリプトを利用して変更

    同じような質問がいくつかありますが、 解決できなかったので、質問させていただきます。 300台近くのPCに静的IPが割り当てられています。 今度のネットワーク変更において、これらのIPアドレスをすべて DHCPへ変更したいと考えています。 wshを利用して、administrator権限では、DHCPへ変更できることは確認しましたが、 ログオンスクリプトにより、Domain Users権限だとやはりうまくDHCPへ切り替わってくれません。 Domain Users権限しかもたないユーザでも、 ログオンスクリプトによってDHCPへ変更させたいのですが、 そのようなことをするのは可能でしょうか。 (runasの場合パスワードを送るようつくらないといけないので、 runas以外でお願いします。) 環境は、  サーバ:Windows Server 2003 Std(Active Directory構築済) クライアント:Windows 2000 Pro,Windows XP Pro 以上、よろしくお願いいたします。

  • DOS窓を自動で閉じるには

    Win2000です。 Aというプログラムからバッチファイルを起動し、 そのバッチからBというプログラムを実行します。 このとき、MS-DOSコマンドプロンプトのウィンドウは、 Bプログラムが終了しないと自動で閉じません。 これをバッチの処理が完了後ただちに閉じたいのですが、 その方法を教えてください。 Win9xではプロパティで設定できたのですが...

  • ログオンスクリプトがうまく実行できない

    はじめして。よろしくお願いします。 以下の環境で運用をしております。 [サーバOS] WindowsServer2003 Standard [クライアント] Windows7 [ネットワーク] ADドメイン環境 今、やりたいことは以下の内容となります。 『ログオンスクリプトでドライブマップしたVドライブに、マイドキュメントのバックアップを"copy"コマンドでコピーしたい。Vドライブの先には利用者固有のフォルダが有る。』 というものです。 [成功している事] 1.ログオンスクリプトでVドライブをマウントできる。 2.作成したバッチファイルは、Windowsが起動中に手動でダブルクリックすると実行され、成功する。 3Vドライブ配下の利用者固有のフォルダについては、既存で運用中のフォルダで利用実績がある。 [失敗すること] 1.ログオンスクリプトで実行されると、Vドライブは作成できても、マイドキュメントはバックアップされない。 当初は、Vドライブマウントと、マイドキュメントバックアップのバッチを別に用意して実行しておりましたが、ドライブマップを再起に行ってからコピーの処理を行いたいので、バッチを一緒にして、Vドライブのマウント後にマイドキュメントをバックアップする。。という命令に変更しました。 ですが、実際は、マイドキュメントはVドライブ内にコピーされません。 [バッチファイルの配置場所] Systemroot%\SYSVOL\sysvol\<ドメイン名>\SCRIPTS ※配置したバッチファイルを、作成しているOUのグループポリシーと紐づけたうえで、 該当のPCを、そのOU配下にドラッグアンドドロップして配置しました。 そして、再起動を実施して、ログオン時に実行できるか確認しましたが、出来ませんでした。 グループポリシーのIDがプロパティで確認できましたので"{ 数字とアルファベットの羅列 }"、そのIDの中にバッチファイルが配置されている事も確認しました。 試しに、スタートアップポリシーでも実施してみましたが、失敗しました。 ログオフスクリプトでも試してみましたが、先にVドライブが外れてしまい、失敗でした。 バッチファイルで、V:\とする箇所を\\IPアドレス\<コピー先>と、直接指定しても、失敗でした。 運用上、Default Domain Policyには当該バッチファイルを配置できず、ユーザーも多い事から、1台1台スタートアップに追加していくのも現実的ではありません。 このため、運用方法としましては、決められたOUごとに、それぞれ当該ログオンスクリプトのグループポリシーを追加設定していくという内容になります。 ドライブマップ、ログオンスクリプトの実行、ドメイン認証、これらの起動順番やサービスアップが、何か関係しているのでしょうか(起動シーケンスの仕様等)。 そもそも、この方法自体に無理があるのでしょうか? 対処法や皆様のお知恵をお借り出来たら幸いです。 アドバイスの程、どうぞよろしくお願いします。