- PR -

net user コマンドについて

投稿者投稿内容
INVENT
常連さん
会議室デビュー日: 2006/03/10
投稿数: 42
投稿日時: 2006-07-28 17:45
こんにちは。
色々とご説明頂きましてありがとうございます。
頂きましたヒントを元に以下のように作成してみました。

Dim cn
cn = InputBox("ユーザー名 を入力してください", "ユーザー名 入力ダイアログ", "例 Taro Yamada")

Dim ou
ou = InputBox("組織単位(OU) を入力してください", "組織単位(OU) 入力ダイアログ", "例 営業部")

Set objUser = GetObject("LDAP://cn=" & cn & ",ou=" & ou & ",dc=jp,dc=hoge,dc=com")
Set objLastLogon = objUser.Get("lastLogon")

intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440

Wscript.Echo "Last logon time + 9: " & DateAdd("h", 9, intLastLogonTime + #1/1/1601#)


これで問題なくScriptが実行されるのですが、
表示されるダイアログ画面でキャンセルをクリックしても
処理が進んでしまいます。

ユーザーがキャンセルボタンをクリックした時点で
処理を中止する場合には、どのような宣言をしてあげればよいのでしょうか?

以下のようなScriptを見つけたのですが、
どのように工夫すれば、今実行しているScriptに埋め込めるのか
悩んでおります。

1: Set objShell = WScript.CreateObject("WScript.Shell")
2: iBtn = objShell.Popup( _
3: "中止する場合は「キャンセル」を押してください。", _
4: 5, "処理を実行しますか?", vbOKCancel+vbQuestion)
5:
6: Select Case iBtn
7: Case vbOK
8: objShell.Popup "実行しました。", 5,, vbInformation
9: Case vbCancel
10: objShell.Popup "キャンセルしました。", 5,, vbInformation


色々とご質問ばかりで大変申し訳ないのですが、
宜しく御願いいたします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-28 20:53
ueです。

InputBox 関数 で表示されたダイアログで[キャンセル]を選択すると、戻り値として Empty が返ります。
その挙動を利用して条件分岐ができます。
IsEmpty 関数 を使用します。
コード:
Dim cn
cn = InputBox("cn を入力してください", "cn 入力ダイアログ", "cn のデフォルト値")

If IsEmpty(cn) Then
    WScript.Echo "キャンセルされました"
Else
    Wscript.Echo "本来の処理: " & cn
End If


こんな感じです。

いかがでしょうか。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
INVENT
常連さん
会議室デビュー日: 2006/03/10
投稿数: 42
投稿日時: 2006-07-30 20:46
こんばんは。
いつもありがとうございます。
スクリプトは以下のようになりました。

Dim cn
cn = InputBox("名前を入力してください", "名前ダイアログ", "例 Taro Yamada")

If IsEmpty(cn) Then
WScript.Echo "キャンセルされました"
Else
Wscript.Echo "本来の処理: " & cn
End If


Dim ou
ou = InputBox("組織名を入力してください", "組織入力ダイアログ", "例 営業部")

If IsEmpty(ou) Then
WScript.Echo "キャンセルされました"
Else
Wscript.Echo "本来の処理: " & ou
End If

Set objUser = GetObject("LDAP://cn=" & cn & ",ou=" & ou & ",dc=jp,dc=hoge,dc=com")
Set objLastLogon = objUser.Get("lastLogon")

ここで更に改良をしたいと考えております。

Dim ou、Dim cnの入力画面でキャンセルかバツボタンを選択した際
InputBox関数の場合、空欄("")が返ると思うのですが、
この状態でスクリプトを進めても最終的にデーターが入力されて
いないのでエラーが発生してしまいます。

その為、Dim ou、Dim cnのどちらか或いは両方に空欄がある場合には、
Set objUserに進まず、スクリプトを終了させたいと思います。

データーが入力されていないので終了します。という感じです。
この場合、Dim ouやcnのデーターをチェックする関数か何かで
定義すれば良いのでしょうか?

また、ouとcnのデーターを入力してサーバーを参照した際、
ユーザーが存在しなかった場合、ユーザーは存在しませんでした。
というメッセージを表示させたいと思います。

そこまでやると難しいスクリプトになりますでしょうか?
どうぞ、宜しく御願いいたします。

スキルアップ/キャリアアップ(JOB@IT)