Avatar billede ulrich_ Nybegynder
19. maj 2005 - 15:36 Der er 31 kommentarer og
4 løsninger

Sharing af netværksdrev og udførelse af simple kommandoer

Hej Eksperter!

En stresset stresset stresset mand søger hjælp.

Jeg er løbet lidt ind i et problem. Jeg skal have lavet følgende:

1. Mappe et share
2. Kopiere indholdet af sharen (\\servernavn\share\folder\*.*) til c:\folder
3. Kopieret c:\folder\filnavn.ini til C:\WINNT\
4. Kopiere genvejen (som ligger i \\servernavn\share\folder) i C:\Documents and Settings\All Users\Desktop.

Og så tænker du sikkert. Jamen, hvorfor laver idioten ikke bare noget lignende det her:

@echo off
net use x: \\servernavn\share\folder
copy x:\folder c:\folder
copy c:\folder\filnavn.ini c:\winnt
net use x: /d
pause.

Grunden til at jeg IKKE kan gøre det, er at jeg faktisk har alle drevbogstaver i  brug (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z), og kan derfor ikke assigne en share til den - og man kan ikke bare bruge en commando alá copy \\servernavn\folder\share c:\folder - det virker simpelthen ikke!

Jeg så her for nyligt et .vsb-script hvor nedenstående stod:

statusfile = "\\servernavn\install" <- Når jeg ser dette går jeg ud fra at man kan klare ovenstående i Visual Basic.

Er der nogen der vil hjælpe mig med dette?
Avatar billede maximus25 Nybegynder
23. maj 2005 - 11:03 #1
Hej ulrich
Jeg havde noget liggende som du måske kan bruge:

On Error Resume Next
Set shell = wscript.createobject("wscript.shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objNetwork= CreateObject("Wscript.Network")
Set WshShell = CreateObject("WScript.Shell")

strUser =objNetwork.UserName

filepath  = "\\serverpath\c$\test"


strDriveLetter = "z:"
objNetwork.RemoveNetworkDrive strDriveLetter, True
objNetwork.MapNetworkDrive strDriveLetter,filepath 

' Copying folder

Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\tester" , filepath , OverWriteFiles


Ovenstående checker om network sharet eksistrer ellers oprettes det
derefter kopieres den ønskede folder

Håber du kan bruge det:):)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 11:08 #2
Hej maximus25. Mange tak. Jeg er sku ikke en haj til vbs. Faktisk har jeg aldrig selv lavet noget i det, men det ser meget logisk ud. Jeg prøver lige, og så vender jeg lige tilbage.

Umiddelbart ser det, for mig, ud som om den mapper \\serverpath\c$\test til z:. Er jeg helt forkert på den?

Læs nedenstående (her mapper den ikke):

-----START-----

Option Explicit
'------------------------- Begin Main() -------------------------

' *****************************************************************************
'Const LOG_FILENAME = "Dev_IDs.log"                'Name of logfile
Const SYSTEM32_PATH = "System32"                'Name of system32 directory
Const TITLE = "Hardwaredetection"
'----- define variables ---------------------------------------------------
Dim fso, wso
Dim SysRoot, SysDrive
Dim Sys32Path
Dim statusfile
Dim DEV_ID_2_A
'----- Get basic objects --------------------------------------------------
On error resume next

Set fso = CreateObject( "Scripting.FileSystemObject" )
Set wso = WScript.CreateObject( "WScript.Shell" )
If fso is nothing or wso is nothing then
    MsgBox("Error creating wsh- or scripting object")
    WScript.Quit
End If

'------ set basic variables -----------------------------------------------
DEV_ID_2_A = wso.ExpandEnvironmentStrings( "%COMPUTERNAME%" ) & "_Dev_IDs.txt"
SysDrive = wso.ExpandEnvironmentStrings( "%SystemDrive%" )    'Systemdrive
SysRoot = wso.ExpandEnvironmentStrings( "%SystemRoot%" )    'SystemRoot (e.g. c:\winnt)
If Right(SysRoot,1) <> "\" then    SysRoot = SysRoot & "\"
Sys32Path = SysRoot & SYSTEM32_PATH & "\"            'System32-Path (f.e. c:\winnt\system32)


' statusfile = SysDrive & "\" & LOG_FILENAME                       
statusfile = "\\sw\install\manfred\" & DEV_ID_2_A
'------------- Get hardware info -------------------------

'------ Delete LogFile if exists ------------------------------------------
' Tom todo: Rausnehmen, wenn in gleiches file wie postsetup geloggt werden soll
If fso.FileExists(statusfile) then fso.DeleteFile statusfile


' Wso.PopUp "Detecting Vendor and Devices",3,TITLE,64

fnWriteSystemInfo

fnWriteLog("-----------------------------------------------------------")


' -------------------------------------------------------------------------
' Start processing hwdetect
' -------------------------------------------------------------------------

' Display Popup to indicate script start
' wso.PopUp "* Detecting Device IDs *", 1, Title, 64


Dim DeviceSet, PnPEntity, numDev, numtmp
Set DeviceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_PnPEntity")

' Count number of detected devices
numDev = 0
For each PnPEntity in DeviceSet
    If (UCase(Left(PnPEntity.DeviceID,4)) <> "ROOT" AND (UCase(Left(PnPEntity.DeviceID,2)) <> "SW") _
      AND (UCase(Left(PnPEntity.DeviceID,7)) <> "STORAGE")) Then
        numDev=numDev+1
    End If
Next

' Create Array and store devices
' arrDevices(ID, DeviceID, DeviceDescription, DeviceManufacturer)
Dim arrDevices()
ReDim arrDevices(numDev,3)
numtmp=0
For each PnPEntity in DeviceSet
    If (UCase(Left(PnPEntity.DeviceID,4)) <> "ROOT" AND (UCase(Left(PnPEntity.DeviceID,2)) <> "SW") _
      AND (UCase(Left(PnPEntity.DeviceID,7)) <> "STORAGE")) Then
        arrDevices(numtmp,0) = numtmp
        arrDevices(numtmp,1) = PnpEntity.DeviceID
        arrDevices(numtmp,2) = PnPEntity.Description
        arrDevices(numtmp,3) = PnPEntity.Manufacturer
        numtmp=numtmp+1
    End If
Next

' ------------- Write Log (with all detected devices if running in debug mode)
Dim iloc
If numDev > 0 Then
    fnWriteLog ""
    fnWriteLog "PnP device detection finished - " & numDev+1 & " devices found."
    fnWriteLog ""
Else
    fnWriteLog "PnP device detection failed - no devices found."
    wso.popup "Errors detecting devices! Detection stopped...",10,TITLE,64
    Wscript.Quit(1)
End If
For iloc = 0 to numDev-1
    fnWriteLog " " & arrDevices(iLoc,1) & vbCRLF  & "    " & arrDevices(iloc,2)  & vbCRLF  & "    (" & arrDevices(iloc,3) & ")"
Next 'iloc


' Log end of processing this subscript
fnWriteLog ""
fnWriteLog "Finished reading Device IDs."
fnWriteLog ""
   
' Terminate
' Wso.PopUp "Processing Hardwaredetection finished!" & vbCRLF & _
'         "Location: "  & statusfile,10,TITLE,64

Wscript.Quit(0)

' -----------------------------------------------------------------------------
' FunctionName: fnWriteSystemInfo
' -----------------------------------------------------------------------------
Sub fnWriteSystemInfo
    Dim oWMISet, oWMIObj
    Dim i
       
    fnWriteLog("Hardware Information")
    fnWriteLog("-----------------------------------------------------------")

    Set oWMISet = GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")
      If oWMISet.Count = 0 Then
            fnWriteLog("Cannot retrieve computer system information")
      Else
          For Each oWMIObj In oWMISet
            fnWriteLog("Manufacturer  : " & oWMIObj.Manufacturer)
            fnWriteLog("Modeltype      : " & oWMIObj.Model)
            fnWriteLog("Memory        : " & oWMIObj.TotalPhysicalMemory \(1024*1024)+1 & " MB")
          Next
      End If

      Set oWMISet = GetObject("winmgmts:").InstancesOf("Win32_VideoController")
      If oWMISet.Count = 0 Then
            fnWriteLog("Video Adapter  : Cannot retrieve information")
      Else
            For Each oWMIObj In oWMISet
            fnWriteLog("Video Adapter  : " & oWMIObj.VideoProcessor)
            Next
      End If
     
      i = 1
    Set oWMISet = GetObject("winmgmts:").ExecQuery ("select * from Win32_NetworkAdapterConfiguration where IPEnabled=true")
      If IsNull(oWMISet) Then
            fnWriteLog("Network Adapter: Cannot retrieve information or device not available")
      Else
        For Each oWMIObj In oWMISet
            fnWriteLog("Net Adapter (" & i & "): " & oWMIObj.Description & "(" & oWMIObj.IPAddress(0) & ")")
            i = i + 1
        Next
    End If
   
      Set oWMISet = GetObject("winmgmts:").InstancesOf("Win32_SoundDevice")
      If oWMISet.Count = 0 Then
            fnWriteLog("Sound Device  : Cannot retrieve information or device not available")
      Else
            For Each oWMIObj In oWMISet
                fnWriteLog("Sound Device  : " & oWMIObj.Description)
            Next
      End If
   


    fnWriteLog("")
End Sub

' -----------------------------------------------------------------------------
' FunctionName: fnWriteLog
' Function:        Appends a line with the given text in the logfile
' Parameter:    sText    -    Text writing to the logfile
'                iMode    -   
' -----------------------------------------------------------------------------
Sub fnWriteLog (sText)
    Dim f
           
    on error resume next
    Set f = fso.OpenTextFile( statusfile, 8, True )
    f.WriteLine sText
      f.Close
End Sub

-----SLUT-----
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 11:09 #3
Essensen:
----Start----
' statusfile = SysDrive & "\" & LOG_FILENAME                       
statusfile = "\\sw\install\manfred\" & DEV_ID_2_A
----Slut----
:)
Avatar billede maximus25 Nybegynder
23. maj 2005 - 14:03 #4
Hejsa ulrich
Det script du lister ovenfor detecterer hardware på en maskine og skriver resultatet til en textfil.
Det er noget andet end det du har brug for.

Det er rigtigt at det script jeg listede mapper \\serverpath\c$\test til "Z".

Er der andet siger du bare til:):)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 14:20 #5
Det ved jeg udemærket godt maximus25. :)

Det jeg ville vise med det, var, at den ikke mapper til noget, og skriver direkte til en netværkspath.

Dit script mapper til Z. Pt. har jeg mappet a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y og z. Dvs. alle drevbogstaver er i brug.

Hu hej, jeg er vanskelig. :-)
Avatar billede maximus25 Nybegynder
23. maj 2005 - 14:40 #6
jeg havde fået forståelsen for at du skulle ,mappe et drev...du skriver:

1. Mappe et share
2. Kopiere indholdet af sharen

Du kan jo bare fjerne:

strDriveLetter = "z:"
objNetwork.RemoveNetworkDrive strDriveLetter, True
objNetwork.MapNetworkDrive strDriveLetter,filepath 

så bliver der ikke mappet et drev men så kopierer du bare mappen.

Er det ikke det du forespørger?
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 14:46 #7
Præcis det jeg forespørger. Vil du hjælpe mig hvis jeg skriver infoen til dig?

Har du en mail-adresse jeg kan fange dig på? Det er lidt lettere at sende det som en txt-fil ;)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 14:46 #8
Svaret bliver selvfølgelig postet herinde, så det ikke er i strid med reglerne på sitet!
Avatar billede maximus25 Nybegynder
23. maj 2005 - 14:50 #9
kan du ikke bare paste det ind her....så kan andre bedre følge med?
Avatar billede maximus25 Nybegynder
23. maj 2005 - 15:01 #10
smid det her så fikser jeg det:):)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 15:31 #11
1. Den skal tage fat i \\x.x.x.x\install\div\wtbooks og kopiere mappen+indholdet til c:\
2. Den skal kopiere filen C:\Wtbooks\bookcase.ini ind i c:\WINNT
3. Den skal kopiere C:\wtbooks\Ordbøger.lnk til C:\Documents and Settings\All Users\Desktop
Avatar billede maximus25 Nybegynder
23. maj 2005 - 15:58 #12
så skulle den være der:

On Error Resume Next
Set shell = wscript.createobject("wscript.shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objNetwork= CreateObject("Wscript.Network")
Set WshShell = CreateObject("WScript.Shell")

strUser =objNetwork.UserName

folderpath  = "\\x.x.x.x\install\div\wtbooks"
filepath    = "c:\WINNT\"
filepath1  = "C:\Documents and Settings\All Users\Desktop\"

' Copying folder

Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\" , folderpath , OverWriteFiles


' Copying file bookcase.ini
   
fso.CopyFile "C:\Wtbooks\bookcase.ini", filepath
    Set fso = Nothing


' Copying file Ordbøger.lnk
   
fso.CopyFile "C:\Wtbooks\bookcase.ini", filepath1
    Set fso = Nothing

Håber du kan bruge det:):)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 16:20 #13
puha. Det ser meget logisk ud. Skal jeg så bare lave en .bat-fil som indeholder

CALL og så stien ? :)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 16:21 #14
doh!
wscript vel? :)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 16:25 #15
http://frip.dk/maxi/test_test.JPG

Det fungerer umiddelbart ikke. Gør jeg noget forkert?
Avatar billede maximus25 Nybegynder
23. maj 2005 - 17:11 #16
du skal gemme det i en .vbs fil som du har gjort...også bare dobbeltklikke på filen for at afvikle scriptet:):)
Avatar billede ulrich_ Nybegynder
23. maj 2005 - 17:14 #17
Den kommer bare og spørger hvilket program jeg vil afvikle filen med. Hvad skal jeg vælge her?
Avatar billede maximus25 Nybegynder
23. maj 2005 - 18:50 #18
du skal ikke lave en bat fil....gem koden i en fil og kald den test.vbs ....dobbelklik på filen så udføres scriptet
Avatar billede ulrich_ Nybegynder
24. maj 2005 - 08:02 #19
Avatar billede maximus25 Nybegynder
24. maj 2005 - 08:09 #20
hmmm...du mangler nok at installerer Windows script host på din maskine.....du finder det på microsofts hjemmeside:

http://www.microsoft.com/downloads/details.aspx?FamilyID=C717D943-7E4B-4622-86EB-95A22B832CAA&displaylang=en

Så tror jeg det virker:):)
Avatar billede ulrich_ Nybegynder
24. maj 2005 - 08:18 #21
Hm, så virker det da umiddelbart som en utrolig dårlig løsning hvis jeg skal installere det på alle pc'er. Kan man ikke lave en batfil med

cscript eller wscript ?
Avatar billede maximus25 Nybegynder
24. maj 2005 - 08:21 #22
for at afvikle .vbs scrits skal dette være installeret.....det følger med windows 2000 og XP(i forskellige versioner). Jeg har mistanke om at det er fjernet fra din maskine....så du skal som udgangspunkt ikke installerer det på alle dine klienter.

Prøv at installer det og se om det virker.....ellers kan du pushe det ud via login scriptet.....men jeg tror ikke det bliver nødvendigt.
Avatar billede ulrich_ Nybegynder
24. maj 2005 - 08:41 #23
Min klient, er en ny client, som ikke har hverken flere eller færrer rettigheder end alle andre der skal have det på. Man kunne godt køre det via login-script, eller runatonce, men det er altså alligevel også tungt at hente ned med 9.6 kb/s mobil opkobling. Kan det virkelig ikke lade sig gøre på andre måde?

Vi kører, som så mange andre, Microsoft Windows XP [Version 5.1.2600] m. SP2.
Avatar billede maximus25 Nybegynder
24. maj 2005 - 08:46 #24
i første omgang synes jeg du skal installere det på din maskine så vi kan se om det løser problemet....hvis et gør må vi tage den derfra:):)
Avatar billede ulrich_ Nybegynder
24. maj 2005 - 09:49 #25
Jeg har installeret det nu, og kan også godt afvikle filen - dvs. den spørger ihvertfald ikke om noget, eller brokker sig.

Dog bliver filerne ikke kopieret. Kan man ikke lave det om, så man evt. kan se hvilke fejl den melder?
Avatar billede maximus25 Nybegynder
24. maj 2005 - 09:58 #26
du kan indsætte en msgbox
Avatar billede maximus25 Nybegynder
24. maj 2005 - 10:29 #27
det virker fint hos mig....er du sikker på at dine foldere og filer er placeres rigtigt?
Avatar billede ulrich_ Nybegynder
24. maj 2005 - 11:06 #28
IP-adressen passer, og kontoen jeg logger på med har både administrative rettigheder på pc'en, samt adgang til sharen. både read/write. Hvad skal jeg ellers tage hensyn til?
Avatar billede maximus25 Nybegynder
24. maj 2005 - 11:27 #29
prøv at give "everyone" adgang til sharen samt den mappe du kopierer filer over til.
Avatar billede maximus25 Nybegynder
24. maj 2005 - 11:28 #30
prøv i første omgang at udskifte stien til sharen med en lokal sti og opret en lokal mappe ...så kan du teste om koden virker hos dig...
Avatar billede maximus25 Nybegynder
25. maj 2005 - 08:51 #31
kan du få det til at virke??::):)
Avatar billede ulrich_ Nybegynder
25. maj 2005 - 09:41 #32
test
Avatar billede ulrich_ Nybegynder
25. maj 2005 - 09:42 #33
Hm. Så er jeg på banen igen. Af uvisse årsager kunne jeg ikke skrive noget til exp.dk igår.

Nej, det virker umiddelbart ikke endnu. Tager lige .vbs filen med hjem, og tester på min egen computer i eftermiddag - vi kører en lidt speciel opsætning, mht. rettigheder osv.

Jeg vender lige tilbage.

pft
Avatar billede maximus25 Nybegynder
02. juni 2005 - 12:38 #34
hva så har du fået det til at virke?
Avatar billede ulrich_ Nybegynder
23. juni 2005 - 12:30 #35
Desværre ikke. Jeg har rodet lidt frem og tilbage og det viser sit at være pc'en, og den specielle opsætning der er skyld i at koden ikke kan afvikles korrekt. Du får dine point som tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester