2016-07-25 83 views
-1

我試圖從LAN上使用WMIC或類似網絡工具從一個批處理中運行的LAN上的PC驅動器上的文件夾的網絡路徑獲取絕對或完整的本地路徑。致力於在測試時,這個網站類似任務的線程數不要在Win 10WMIC查詢在Windows 10中獲取局域網上的絕對共享路徑

例如提供工作的解決方案,運行在一個答案查詢在Win 10 Cmd的建議時,我得到:

C:\WINDOWS\system32>wmic share where "name='\\Laptop\Data'" get path 
Node - OFFICE 
ERROR: 
Description = Invalid query 

C:\WINDOWS\system32>wmic share where "name='Data'" get path 
No Instance(s) Available. 

我需要此結果:K:\ Data,其中K:\是LAN上遠程PC的硬盤驅動器,Data是該驅動器上的共享文件夾。

有人可以建議一個工作查詢&批處理該任務? WMIC文檔太廣泛,無法通過反覆試驗推導出工作查詢,而沒有使用該工具的豐富經驗。

+0

如果'\\ laptop \ data'是*不是絕對路徑,請定義'absolute'的含義。 – dxiv

+0

這種情況下的絕對路徑是K:\ Data,其中K:\是安裝在該遠程PC上的硬盤驅動器卷的驅動器號。 – sambul35

+0

你應該編輯成問題(因爲[絕對路徑(https://en.wikipedia.org/wiki/Path_(計算)#Absolute_and_relative_paths)通常有不同的含義使用)。 – dxiv

回答

0

建議在線程技術與某些額外的行動工作。

當使用WMIC時,我不得不add本地管理員帳戶到WMI控制安全屬性。同時,通過運行輸入gpedit.msc enabled允許入站遠程管理例外」防火牆規則,儘管防火牆被禁用。正確的查詢是下面,處理它的輸出需要在方法上類似一個批處理文件PSEXEC批:

wmic /user:[username] /password:[password] /node:"PC-ID" share get 

@echo off 
setlocal EnableExtensions EnableDelayedExpansion 
for /f "tokens=1,2 skip=1 delims=:" %%u in ('wmic /user:[username] /password:[password] /node:"Laptop" share get') do @(
    set "var1=%%u" & set "var2=%%v" 
    set "var1.1=!var1:~89,-1!" & set "var2=!var2:~0,33!" & set "var1.2=!var1:~97!" & set "var1.3=!var1.1:~0,4!" 
    if not "!var1.3!"=="IPC$" if not "!var1.1!"=="" echo \\Laptop\!var1.1! = !var1.2!:!var2!) 
exit /b 

::Output 
\\Laptop\ADMIN$ = C:\WINDOWS 
\\Laptop\C$  = C:\ 
\\Laptop\D$  = D:\ 
\\Laptop\Data  = K:\ 
\\Laptop\K$  = K:\ 
\\Laptop\Docs  = K:\Other\Docs 
\\Laptop\print$ = C:\windows\system32\spool\drivers 

當使用PSEXEC而不是WMIC,我不得不install它,然後再add額外關鍵LocalAccountTokenFilterPolicy在註冊表,然後修改先前發佈的命令:

@echo off 
for /f "tokens=1,2" %%u in ('psexec64 -u [username] -p [password] \\Laptop cmd /c net share 2^>nul') do @(
    for /f "tokens=1,2 delims=:" %%x in ("%%u %%v") do @(
     if not "%%y"=="" echo \\Laptop\%%u = %%v)) 
exit /b 

::Output 
\\Laptop\C$ = C:\ 
\\Laptop\D$ = D:\ 
\\Laptop\print$ = C:\windows\system32\spool\drivers 
\\Laptop\K$ = K:\ 
\\Laptop\ADMIN$ = C:\WINDOWS 
\\Laptop\Data = K:\ 
\\Laptop\Docs = K:\Other\Docs 
1
wmic share where name='C$' get path 

在這裏工作(因爲只有一個測試不需要雙引號)。那麼

wmic share where "name='C$'" get path 

你發佈的內容說你沒有一個名爲data的股份。

wmic share get /format:list 

顯示你有什麼。

C:\Users\User>wmic share get 
AccessMask AllowMaximum Caption  Description InstallDate MaximumAllowed Name Path  Status Type 
      TRUE   Remote Admin Remote Admin        ADMIN$ C:\Windows OK  2147483648 
      TRUE   Default share Default share        C$  C:\   OK  2147483648 
      TRUE   Default share Default share        D$  D:\   OK  2147483648 
      TRUE   fred              fred C:\Intel OK  0 
      TRUE   Default share Default share        G$  G:\   OK  2147483648 
      TRUE   Remote IPC  Remote IPC         IPC$    OK  2147483651 
      TRUE   TestC              TestC C:\   OK  0 

照例wmic /?wmic share /?wmic share call /?wmic share get /?wmic /format /?

對於遠程計算機,您必須連接到該計算機(請參閱wmic /node /?)。

wmic /node:127.0.0.1 share get 
+0

您的解決方案不適用於網絡路徑,僅適用於本地路徑。請注意,我已經有一個已知的網絡路徑。 – sambul35

+0

這就是你的查詢。所以它確實有效。股票是機器與別人共享的東西。 – 2016-07-25 00:37:16

+0

您的解決方案僅列出運行PC的本地共享,但不包括局域網上其他PC的共享。至少對於我來說。 :) – sambul35

1

下面列出映射本地機器上的(當前連接的)遠程股驅動器號。

C:\etc>for /f "tokens=1-3" %x in ('net use') do @if /i "%x" equ "ok" echo %z = %y 

\\laptop\x$ = P: 
\\laptop\data = Q: 


繼OP編輯( 亮點礦):
[+ 編輯正確 net share用法]

如果您需要分配在K:盤符遠程機器到包含共享目錄的驅動器,然後您可以運行net share遠程使用PsExec或類似的(只要您在遠程計算機上擁有足夠權限的帳戶)。

例如,假設\\laptop是LAN上的另一臺機器,以下將列出\\laptop上的共享名稱和(遠程)目錄。

C:\etc>for /f "tokens=1,2" %u in ('psexec \\laptop cmd /c net share 2^>nul') do @(
     for /f "tokens=1,2 delims=:" %x in ("%u %v") do @(
      if not "%y"=="" echo "\\laptop\%u" = "%v")) 

"\\laptop\C$" = "C:\" 
"\\laptop\ADMIN$" = "C:\Windows" 
"\\laptop\DATA" = "K:\Data" 
+0

我沒有將本地計算機上的任何驅動器號映射到網絡共享,因爲它們是動態裝入的並可在Win Explorer中無驅動器號訪問。我需要的是遠程完整路徑,它們已經擁有。 – sambul35

+0

此外,我得到:'C:\ WINDOWS \ system32>淨使用 新的連接將被記住。 列表中沒有條目.'儘管網絡共享已安裝在本地PC上。我使用Admin Cmd提示。 – sambul35

+0

@ sambul35根據答案的第二部分,對於共享的* remote *路徑,您需要在* remote *機器上運行net use。如果您詳細說明了最終目標是什麼,它可能會有所幫助,因爲在大多數常見情況下,遠程計算機上基於驅動器號的路徑不太有用。 – dxiv