- める
- 会議室デビュー日: 2008/01/30
- 投稿数: 8
|
投稿日時: 2008-01-30 22:20
いつも大変参考にさせていただいています。
Windows2003 ActiveDirectory下で、ユーザーがドメインログオン時にディレクトリ情報内の社員番号をローカルPCの環境変数へ代入したいのですが良い方法は無いでしょうか。
クライアントPCへdsquery.exe、dsget.exeをコピーし、dsquery user -name hogehoge | dsget user -empid とすればhogehogeの社員番号が取得できることは確認できたのですが、この返り値は余計な文字列が入ってる、環境変数への代入方法がわからないの2点で悩んでいます。
ぜひご指導いただけますよう、よろしくお願いします。
|
- deanna
- 大ベテラン
- 会議室デビュー日: 2004/08/23
- 投稿数: 118
|
投稿日時: 2008-01-30 22:57
Windowsのバッチファイルならこんな方法で部分文字列が取得できますけど
SET DT=%date:~-10%
SET yy=%DT:~0,4%
SET mm=%DT:~5,2%
SET dd=%DT:~8,2%
|
- ぴよこ
- ベテラン
- 会議室デビュー日: 2006/12/11
- 投稿数: 61
|
投稿日時: 2008-01-31 09:16
こんなvbsでいけるかな?
テストしてません。
エラー処理も適当。
不要なコードも多数あり。
コード: |
|
strDcName="DCName" ' あなたのドメインコントローラ名
strAttribute="employeeID"
scope="subtree"
set net=CreateObject("Wscript.Network")
strFilter="(&(objectClass=user)(samaccountname="& net.UserName &"))"
strQuery="<LDAP://" & strDCName & ">;" & strFilter & ";" & strAttribute & ";" & scope
Set objConnection=CreateObject("ADODB.Connection")
objConnection.Provider="ADsDSOObject"
objConnection.Open "ADs Provider"
Set objCommand=CreateObject("ADODB.Command")
objCommand.ActiveConnection=objConnection
objCommand.Properties("Page Size")=1000
objCommand.CommandText=strQuery
Set objRecordSet=objCommand.Execute(strUserQuery)
if not objRecordSet.EOF then
strEmployeeNumber=objRecordSet.Fields(strAttribute)
if not strEmployeeNumber="" then
strEmployeeNumber=Cstr(strEmployeeNumber)
set shell =Wscript.CreateObject("Wscript.Shell")
set WshEnvironment=shell.Environment("User")
WshEnvironment.Item(strAttribute)=strEmployeeNumber
end if
end if
|
|
- める
- 会議室デビュー日: 2008/01/30
- 投稿数: 8
|
投稿日時: 2008-01-31 10:50
deannaさん、ぴよこさん早速のご回答ありがとうございます。
>> deannaさん
文字列操作なんですが、この操作の画面への返り値が複数行あります。
例)
empid
01234
dsget 成功
この場合はどのように変数に入るかでご教示いただいた手法が使えそうですね。
>> ぴよこさん
私自身vbsを理解していませんのでいただいたスクリプトの検証を勉強含めてさせていただきます。
ありがとうございます。
|