it-swarm-eu.dev

È possibile ricollegare un'unità di rete mappata dalla riga di comando?

Ogni giorno mi trovo nel comando di Windows Prompt che richiede l'accesso a un'unità di rete mappata ma disconnessa. Devo ancora trovare un comando che ricolleghi questa unità senza decomprimere e rimappare (che porta a un gioco di indovinelli di password, dal momento che non possiedo questi computer). Mi piacerebbe anche essere in grado di sceneggiarlo così ogni notte l'unità viene ricollegata se è stata scollegata in qualche modo.

La soluzione più veloce che ho attualmente è:

  1. Digita "start." per aprire Explorer,
  2. Alt-D per mettere a fuoco la barra degli indirizzi,
  3. digitare la lettera dell'unità desiderata e premere Invio e attendere che venga visualizzato il contenuto dell'unità,
  4. quindi, infine, chiudi Explorer e torna al comando Prompt.

So che si tratta di un piccolo inconveniente, ma lo faccio spesso attraverso una lenta connessione VNC o PCAnywhere dove fare qualcosa attraverso la GUI è orribile, quindi mi chiedo solo se c'è una soluzione migliore.

32

Forse provare pushd \\server\share?

12
wfaulk

creare un file batch (refreshletters.cmd) con questi comandi al suo interno

( questi funzioneranno solo all'interno di un file batch )

Testato su Win7 e XP per aggiornare le lettere dei driver "Disconnected" e "Unavailable" in una finestra della console (riga di comando).

@echo off
Net Use |FIND ":" > %temp%\used.txt
FOR /F " tokens=1,2,3 delims= " %%i in (%temp%\used.txt) do (

  if %%i EQU Unavailable  (
    Net Use %%j %%k
    echo Activated %%j
   ) ELSE (
     if %%i EQU Disconnected (
       pushd .
       cd /d %%j
       dir . %>nul
       if NOT exist %%j\. (
          Net Use %%j /del /y
          Net Use %%j %%k
          echo Remapped %%j
          ) else (
             echo Fixed-up %%j
            )
       popd
       ) ELSE (
          echo Checked %%j
          )
     )
 )
7
Brian

Devo avviare Windows 7 prima di poter eseguire il programma VPN che mi collega alle unità di rete dell'azienda. Pertanto le mie unità di rete non si ricollegano automaticamente, ma solo aprendole in Esplora risorse si ricollegano.

Ho creato un piccolo file batch per avviare la VPN, ricollegare le unità di rete e avviare alcune applicazioni che utilizzo sempre.

Nel mio file Batch ho il seguente:

REM Connect VPN here...

REM Opens an Explorer window looking at T: forcing a reconnect
Start /min Explorer t:\

timeout 3 /nobreak

REM Kill all Explorer windows beginning with "T_drive" in the title
Taskkill /fi "windowtitle eq T_drive*"

REM Finish starting up here...

exit

Il comando Taskkill /fi "windowtitle eq" è case sensitive!

7
Claus Melander

Questa è probabilmente una domanda stupida, ma supponendo che la tua unità "disconnessa" sia H :, hai provato a cambiare direttamente sull'unità?

Funziona per me sotto XPSP3:

C:\>Net Use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Disconnected H:        \\xxxxxx\wfaulk           Microsoft Windows Network
OK                     \\xxxxxxx\business        Microsoft Windows Network
The command completed successfully.


C:\>h:

H:\>Net Use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
OK           H:        \\xxxxxx\wfaulk           Microsoft Windows Network
OK                     \\xxxxxxx\business        Microsoft Windows Network
The command completed successfully.
6
wfaulk

So che hai detto che "Net Use" non ha funzionato per te - ma ecco cosa potresti provare.

Eseguire un file batch con l'opzione Usa rete/ELIMINA per rimuovere le connessioni esistenti/persistenti e quindi è possibile utilizzare l'utilizzo netto con l'opzione/SAVECRED per riutilizzare le credenziali passowd utilizzate nell'ultimo accesso riuscito. Non sono sicuro che questo risolverà il tuo problema, ma vale la pena esaminarlo.

4
Critical Skill

Ho lo stesso problema con più connessioni, ed è intermittente. Quando riavvio il computer, a volte la connessione è "buona" e talvolta no. Non ho il problema con la password dato che sono su una LAN aziendale, ma ho ancora l'altro aspetto del problema.

Ho creato un file batch chiamato ex.bat e lo ho memorizzato (insieme a molte altre cose) in una directory\util che ho inserito nel mio percorso. Posso digitare "ex h:" e verrà eseguito Windows Explorer e impostato per andare direttamente alla h: unità. Ecco il file batch:

start Explorer /e,/select,%1

Funziona, con un numero molto inferiore di tasti. Oppure, se inizialmente non funziona, premi il tasto Invio per aprire la cartella h: root e visualizzarne il contenuto. Oppure, digita "ex h:\sub" dove esiste la sottocartella "sub".

Il problema sembra essere peggiorato di recente, forse a causa di una delle patch di sicurezza Windows XP.

Un'altra cosa da provare è sul lato server. Sui server Windows, la modifica di una chiave del Registro di sistema dovrebbe impedire al server di disconnettere le sue connessioni in un timeout. Lo faccio praticamente su tutti i nostri server. Il file è:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff
2
Warren

Ho avuto un problema simile e ho scoperto che potevo forzare una riconnessione con una semplice "dir x:" dalla riga di comando (dove X: era l'unità mappata ma disconnessa.) Questo era da un sistema Server 2003 alle unità mappate su XP e computer Win7.

Ho creato un file batch, wake_network_drives.bat, con queste due linee:

    dir x:
    dir z:

e impostare un'attività pianificata per eseguirla ogni notte prima che il programma di backup non funzionasse perché le unità venivano occasionalmente visualizzate come disconnesse.

1
StanZ

TL; Riepilogo DR: usa Net Use e if exist

Ho riscontrato un problema correlato durante la creazione di uno script di backup notturno. Doveva controllare se un computer era acceso (usando il ping), inviare un pacchetto magico per accenderlo se necessario (usando MC-WOL ), attendere l'avvio di Windows, quindi stabilire una connessione a una condivisione SMB e attendere che sia presente.

Mentre altre risposte qui sono grandiose, non volevo che lettere di unità mappate saltassero dentro/fuori dall'esistenza, o per disconnettere qualsiasi cosa con cui l'utente potesse funzionare, né avere finestre di Explorer lampeggianti. Ad esempio, un obiettivo era zero distrazione utente .

Ecco una parte di codice che potrebbe esserti utile:

set TARGET_IP=192.168.1.3
set TARGET_PATH=\\%TARGET_IP%\d$\backups
set ATTEMPTS=0

:LOOP

REM Give up eventually
if %ATTEMPTS% GEQ 200 goto NOJOY

REM Wait for IP connectivity to Host, and/or burn up a couple seconds before retry
ping -n 1 -w 2000 %TARGET_IP% | find "TTL" > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP

REM See if we're already connected, and try to give it a kick
if exist %TARGET_PATH% goto CONNECTED

REM Try to reconnect
Net Use %TARGET_PATH% > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP

:CONNECTED
echo Connected
exit /b

:NOJOY
echo Couldn't connect

Se si preferisce, è possibile sostituire l'indirizzo IP sopra con un nome host (ad esempio server1).

Net Use è necessario nel caso in cui non sia presente alcuna connessione esistente. Mi sono imbattuto in alcuni casi d'angolo in cui da solo sembrava insufficiente a "svegliare" la condivisione (ad esempio se esisteva una connessione precedente esistente in uno stato disconnesso). Ho trovato che la direttiva if exists ha un effetto simile a quello delle alternative menzionate in altre risposte (come pushd, dir, Explorer, etc), ma sembrava un approccio più leggero.

0
rkagerer

Forse una vecchia domanda ma ancora rilevante nel 2017 e Windows 10 perché le condivisioni di rete spesso non vengono riconnesse o collegate in modo corretto da Windows per motivi diversi. Sulla base di questo problema e dell'assenza di una soluzione pratica e pienamente operativa, ho creato un progetto Github che contiene un'attività di pianificazione e un VBS che risolve il problema semplicemente tentando di ricollegare le unità dopo la ripresa o l'accesso se non connesso o online.

Lo script è completamente configurabile e può essere impostato in base alle esigenze dell'utente reale.

Percorso del progetto Github

0
thex

Se non si è contrari a mantenere queste password in testo semplice in un batch, è possibile scrivere un'eliminazione e rimappare le credenziali incluse.

Net Use H: /delete
Net Use H: \\server\share /user:domain\user password /persistent:yes

So che non soddisfa la tua esigenza di non eliminare la condivisione, ma risolve la radice del problema di dover ricordare le password.

0
MDMarra

Scrivi semplicemente:

Net Use H: \\server\share

(dove H: è la tua lettera di guida ovviamente)

Digitare 'NET /? USA 'per vedere tutte le opzioni fornite da questo comando.

0
Zoran

La risposta di StanZ ha funzionato per me, ma dovevo essere in grado di determinare in modo programmatico qualsiasi unità mappata senza lo stato di OK, in quanto gli utenti nel nostro dominio ottengono diversi mapping di unità. Ho programmato qui per funzionare come versione stand-alone, che esegue Net Use prima e dopo il codice effettivo, in modo da poter vedere i risultati, ma è sufficiente copiare l'unica dichiarazione FOR (tre righe) nel codice per ottenere il desiderato risultati.

@ECHO OFF
::  
:: revision of answer from StanZ on superuser.com at the following url  
:: https://superuser.com/questions/52595/can-a-mapped-network-drive-be-reconnected-from-the-command-line/367910#367910  
:: https://superuser.com/a/367910  
:: which resulted in my  
::  
:: DriveStatusOK.bat  
:: iCharlieC  
::  
SETLOCAL ENABLEEXTENSIONS  
::  
:: you need only copy the one FOR statement (three lines)  
::   to use in your own code  
::   to force status of mapped network drives to OK  
::  
:: "tokens=1-2 delims=: " is used in the for statement  
:: to output only the drive letter from the output of...  
:: Net Use  
:: is piped to the first findstr which outputs only lines with drive letters  
::   then piped to another findstr to eliminate drives with a status of OK  
::   then piped to another findstr to get lines that start with a status  
::     -in other words, those lines that the first character is a letter-  
::     -this due to the fact that in our domain we have a drive  
::      that is mapped to a letter, but never has a status.  
::      I do not know the reason for this,  
::      but adding that last findstr prevents me from getting an error  
::      from trying to execute a dir on a non-existant drive letter.-  
::   then dir is executed on each drive letter (after appending ":\" to the letter)  
::      and the output redirected to NUL  
::  
:: run Net Use before as a visual here  
Net Use  
::  
FOR /F "tokens=1-2 delims=: " %%i in (  
    'Net Use ^| findstr ":" ^| findstr /i /v "^OK" ^| findstr /i "^[A-Z]"'  
    ) do dir "%%j:" > NUL  
::  
:: run Net Use after "waking" drive(s)  
Net Use  
::  
ENDLOCAL  
0
Charlie C