2016-07-25 20 views
-1

Ich versuche, einen absoluten oder vollständigen lokalen Pfad aus einem Netzwerkpfad eines Ordners auf einem PC-Laufwerk im LAN mit WMIC oder ähnliche Netzwerk-Tool aus einem Batch abzuleiten . Ein paar Fäden ähnliche Aufgaben auf dieser Seite gewidmet, wenn es in Win Arbeitslösung nicht getestet anbieten 10.WMIC-Abfrage zum Ableiten von absoluten gemeinsamen Pfaden im LAN in Windows 10

Wenn zum Beispiel ein Vorschlag in einer Antwort Abfrage in Win 10 Cmd läuft, ich habe:

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. 

Ich brauche dieses Ergebnis: K: \ Daten, wo K: \ ist eine Festplatte des Remote-PC im LAN, und Daten freigegebenen Ordner auf diesem Laufwerk.

Kann jemand vorschlagen, eine funktionierende Abfrage & Batch für diese Aufgabe? Die WMIC-Dokumentation ist viel zu umfangreich, um eine funktionierende Abfrage nach Trial-and-Error ohne wesentliche Erfahrung in der Verwendung des Tools abzuleiten.

+0

Wenn '\\ Laptop \ Daten' ist * nicht * ein absoluter Pfad, bitte definieren Sie, was Sie mit' absolut' meinen. – dxiv

+0

Absoluter Pfad in diesem Fall wäre K: \ Data, wobei K: \ der Laufwerkbuchstabe des Festplattenlaufwerks ist, das auf diesem Remote-PC installiert ist. – sambul35

+0

Sie sollen, dass in die Frage bearbeiten (seit [absoluter Pfad] (https://en.wikipedia.org/wiki/Path_ (computing) #Absolute_and_relative_paths) wird häufig mit einer anderen Bedeutung verwendet). – dxiv

Antwort

0

Vorgeschlagen in den Thread-Techniken mit bestimmten zusätzlichen Aktionen.

Bei der Verwendung von WMIC musste ich add lokalen Administrator-Konto zu WMI Control Security Eigentum. Wie gut, indem Sie GPEDIT.MSCenablederlauben eingehende Remoteverwaltung Ausnahmen“ zu Firewall-Regeln trotz Firewall deaktiviert wurde. Die richtige Frage ist unten, die Verarbeitung ist es eine Ausgabe wie eine Batch-Datei erforderlich in Ansatz zu PsExec Partie:

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 

Bei der Verwendung von PsExec statt WMIC, musste ich install es zuerst, dann add ein zusätzlicher Schlüssel LocalAccountTokenFilterPolicy in Registrierung, dann ändern Sie den zuvor geposteten Befehl:

@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 

Funktioniert hier (da nur ein Test keine Anführungszeichen benötigt). Das Gleiche gilt für

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

Was Sie auf dem Laufenden, sagt man nicht eine Aktie data genannt haben.

wmic share get /format:list 

Zeigt Ihnen, was Sie haben.

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 

Wie üblich wmic /?, wmic share /?, wmic share call /?, wmic share get /?, wmic /format /?.

Für Remote-Computer müssen Sie eine Verbindung zu diesem Computer herstellen (siehe wmic /node /?).

wmic /node:127.0.0.1 share get 
+0

Ihre Lösung funktioniert hier nicht für Netzwerkpfade, nur für lokale Pfade. Bitte beachten Sie, ich habe bereits einen bekannten Netzwerkpfad. – sambul35

+0

Das ist Ihre Anfrage. Es funktioniert also. SHARE ist, was eine Maschine mit anderen teilt. –

+0

Ihre Lösung listet nur lokale Freigaben des PCs auf, auf dem sie ausgeführt wird, nicht jedoch die Freigaben anderer PCs im LAN. Zumindest für mich. :) – sambul35

1

Die folgende Liste enthält die Fahrt auf der lokalen Maschine an die (aktuell verbundenen) entfernten Aktien abgebildet Buchstaben.

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: 


Nach der OP bearbeiten ( Highlight von mir):
[+ EDIT für die korrekte net share Verbrauch]

Wenn Sie den K: Laufwerksbuchstaben auf dem zugewiesen müssen remote Maschine auf das Laufwerk mit dem freigegebenen Verzeichnis, dann könnten Sieausführenremote mit PsExec oder ähnlich (vorausgesetzt, Sie haben ein Konto mit ausreichenden Rechten auf dem Remote-Computer).

Angenommen, \\laptop ist ein anderer Computer im LAN, werden im Folgenden die Freigabenamen und (Remote-) Verzeichnisse unter \\laptop aufgelistet.

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

Ich habe keine Laufwerksbuchstaben auf dem lokalen Computer Netzwerkfreigaben zugeordnet, da sie dynamisch und im Windows Explorer ohne Laufwerksbuchstaben zugänglich sind. Ich brauche nämlich komplette Fernwege, die sie schon haben. – sambul35

+0

Außerdem bekomme ich: 'C: \ WINDOWS \ system32> net Verwendung Neue Verbindungen werden in Erinnerung bleiben. Es sind keine Einträge in der Liste. Dies ist trotz der Netzwerkfreigabe bereits auf dem lokalen PC montiert. Ich benutze Admin Cmd Eingabeaufforderung. – sambul35

+0

@ sambul35 Im zweiten Teil der Antwort müssen Sie für die * remote * Pfade zu den Freigaben 'net use' auf dem * remote * Rechner ausführen. Es könnte hilfreich sein, wenn Sie das ultimative Ziel ausgearbeitet haben, da auf Laufwerksbuchstaben basierende Pfade auf einem Remote-Computer in den meisten Fällen nicht allzu nützlich sind. – dxiv