iT邦幫忙

0

想請教reg query跟reg add的用法,修改outlook ldap通訊錄port號

  • 分享至 

  • xImage

不好意思,小弟不太會寫程式
因為目前遇到一個問題
outlook有用ldap去設定同步AD的通訊錄
因為預設的port 389必須改port(因為資安的部分必須修改)
但是底下的員工數量有點多
想說用logon script去讓他們登入的時候自動修改
所以我目前查了一些資料~
reg query可以查詢
reg add可以修改
但是我要怎麼組合,讓他查到之後直接修改那個值呢?
因為outlook的ldap的設定位置再regedit裡面不是固定的地方(會因為Profile)不同
所以想問問有沒有大大可以教一下怎麼組合這兩個指令去修改port號呢?Thanks

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Outlook*f36a122b1f3f3e409718e3b2411b2588*
001e6601 REG_SZ 389

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
nwm310
iT邦新手 3 級 ‧ 2022-03-03 22:48:00
最佳解答

沒有測試、無法測試
希望可以派上用場

@echo off
setlocal enableDelayedExpansion

set "regPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Outlook"
set find_ValueName=001e6601
set find_Type=REG_SZ
set newPort=123

set cmdstr=reg query "%regPath%" /f "%find_ValueName%" /e /v  /t "%find_Type%" /s

::畫面右邊某一個值
::reg query regPath /v 值的名稱

::regPath (預設值)
::reg query regPath /ve

::畫面左邊「子資料夾」 or 畫面右邊「值的名稱」 or 畫面右邊「值的值」
::reg query regPath /f 部份符合字串
::reg query regPath /f 完全符合字串 /e

:: /c 區分大小寫
:: /t 值的type
:: /s 尋找各層


::畫面左邊子資料夾
::reg query regPath /f 部份符合字串 /k

::畫面左邊所有的子資料夾
::reg query regPath /f * /k

::畫面右邊「值的名稱」
::reg query regPath /f 部份符合字串 /v

::畫面右邊「值的值」
::reg query regPath /f 部份符合字串 /d

for /f "delims=" %%a in ('%cmdstr%') do (
    set line=%%a

    rem 先顯示regKey的路徑
    if "!line:~0,5!" == "HKEY_" (
         echo keyPath=!line!
         set keyPath=!line!
    )

    rem 再顯示找到的值「名稱」、「型別」、「值」
    if "!line:~0,4!" == "    " (

        rem 2022/3/5 update
        rem 這行是舊版 for /f "tokens=1-3" %%f in ("!line!") do (
        
        rem 下面是新版。值的「內容」可以含有空格了。
        rem 但是,值的「名稱」仍然不能含有空格。
        for /f "tokens=1,2*" %%f in ("!line!") do (
            echo ValueName=%%f
            echo ValueType=%%g
            echo Value=%%h

            rem 如果正確的話,移除前面的echo
            echo reg add "!keyPath!" /v "%%f" /t %%g /d "%newPort%" /f
        )
    )
    pause
)
看更多先前的回應...收起先前的回應...
aaronlin iT邦新手 3 級 ‧ 2022-03-04 09:14:37 檢舉

參數不正確
QUERY { PROCESS | SESSION | TERMSERVER | USER }
'ry' 不是內部或外部命令、可執行的程式或批次檔。
'ry' 不是內部或外部命令、可執行的程式或批次檔。
'ry' 不是內部或外部命令、可執行的程式或批次檔。
keyPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Outlook\f36a122b1f3f3e409718e3b2411b2588
請按任意鍵繼續 . . .
ValueName=001e6601
ValueType=REG_SZ
Value=389
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Outlook\f36a122b1f3f3e409718e3b2411b2588" /v "001e6601" /t REG_SZ /d "123" /f
請按任意鍵繼續 . . .
請按任意鍵繼續 . . .

得到的結果是這樣,我看了一下也沒有修改成功,我查不到ry是在哪一行有問題耶@_@不好意思

set "regPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Outlook"

改成

set regPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Outlook
nwm310 iT邦新手 3 級 ‧ 2022-03-04 10:27:36 檢舉

把雙冒號註釋內容全部移除,再試試看

aaronlin iT邦新手 3 級 ‧ 2022-03-04 10:34:30 檢舉

非常感謝,後來我發現了問題點,原來是我誤會了你最後的註解,我以為是程式判斷後會自動把前面的echo給拿掉並寫入
原來是告訴我確認之後手動拿掉,目前測試正常了,非常感謝您的回應~解決了我的問題,Thanks

我要發表回答

立即登入回答