Avatar billede kimborg Nybegynder
16. januar 2007 - 12:05 Der er 14 kommentarer og
2 løsninger

Oprette flere Virtual Directory på en gang

Hvordan opretter jeg flere/mange Virtual Directory's på en gang, gerne med forudbestemte rettigheder (read/write)?
Avatar billede Slettet bruger
16. januar 2007 - 15:20 #1
Jeg går udfra at det er til din FTP server.
Brug den samme "Brugere.csv" som du brugte i spørgsmål  http://www.eksperten.dk/spm/755306

Ret Const FtpSite = "Default FTP Site" til navnet på dit FTP site
Ret Const FtpRoot = "C:\FTP" til folder hvor brugernes foldere fysisk skal være.
Det kan være hvor som helst på din server, hvis folderen ikke eksisterer bliver den oprettet.

Scriptet bruger dette script: Iisftpdr.vbs, ligger i %SYSTEMROOT%\System32
Læs mere her: http://technet2.microsoft.com/WindowsServer/en/library/dc23b92d-7842-47a6-bbe8-72da589704dc1033.mspx?mfr=true

Du vil se et kommando vindue poppe op for hvert Virtual Directory der bliver oprettet.

På dit FTP site (Start Internet Information Services (IIS) Manager).
Vælg Properties (På dit FTP site) >Fanebledet Security Accounts.
Fjern hakket i Allow anonymous connections.
Når dine brugere logger på FTP sitet vil de automatisk komme til deres egen folder.

:-)

'***** Script start *****
Const FtpSite = "Default FTP Site"
Const FtpRoot = "C:\FTP"

Const strInputFile = "Brugere.csv"
Const BrugerNavn = 0
Const ForReading = 1
strResponse = MsgBox ("Start oprettelsen af FTP Virtual Directories    ", 36, "FTP Virtual Directories")
If strResponse <> 6 then WScript.Quit
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oUserList = oFSO.OpenTextFile (strInputFile, ForReading)
Counter = 0
Set WshNetwork = CreateObject("WScript.Network")
Do Until oUserList.AtEndOfStream
  strNextLine = oUserList.Readline
  Counter =  Counter + 1
  arrUserList = Split(strNextLine , ";")
  If Len(arrUserList(BrugerNavn)) > 0 Then
    strCommand = "Cscript.exe iisftpdr.vbs /create "&chr(34)&FtpSite&chr(34)&" "&chr(34)&arrUserList(BrugerNavn)&chr(34)&" "&chr(34)&FtpRoot&"\"&arrUserList(BrugerNavn)&chr(34)&", 2, True"
    Set WshShell = WScript.CreateObject("WScript.Shell")   
    WshShell.Run strCommand
  End If
Loop
oUserList.Close
strMessage = "Der er oprettet " & Counter & " FTP Virtual Directories.    " & Chr(13) & Chr(13)
strResponse = MsgBox (strMessage, 64, "FTP Virtual Directories")
'***** Script slut *****
Avatar billede Slettet bruger
16. januar 2007 - 18:41 #2
Brug dette script i stedet.

Ret Const FtpRoot = "C:\FTP" til stien hvor brugernes foldere fysisk skal være.
Det kan være hvor som helst på din server, hvis folderen ikke eksisterer bliver den oprettet.

:-)

'***** Script start *****
Const FtpRoot = "C:\FTP"

Const strInputFile = "Brugere.csv"
Const BrugerNavn = 0
Const ForReading = 1
strResponse = MsgBox ("Start oprettelsen af FTP Virtual Directories    ", 36, "FTP Virtual Directories")
If strResponse <> 6 then WScript.Quit

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oUserList = oFSO.OpenTextFile (strInputFile, ForReading)
Counter = 0

Set oSite = GetObject("IIS://localhost/MSFTPSVC/1/root")
Set WshNetwork = CreateObject("WScript.Network")
Do Until oUserList.AtEndOfStream
  strNextLine = oUserList.Readline
  arrUserList = Split(strNextLine , ";")
  If Len(arrUserList(BrugerNavn)) > 0 Then
    CreateFolder(FtpRoot & "\" & arrUserList(BrugerNavn))
    Set oVDir = oSite.Create("IIsFtpVirtualDir", arrUserList(BrugerNavn))
    oVDir.Path = FtpRoot & "\" & arrUserList(BrugerNavn)
    oVDir.AccessRead = True
    oVDir.AccessWrite = True
    oVDir.SetInfo
    Counter =  Counter + 1
  End If
Loop
oUserList.Close

strMessage = "Der er oprettet " & Counter & " FTP Virtual Directories.    " & Chr(13) & Chr(13)
strResponse = MsgBox (strMessage, 64, "FTP Virtual Directories")

Sub CreateFolder(FolderName)
  arrNewFolder = Split(FolderName, "\")
  strNewFolder = arrNewFolder(0) & "\"
  Set oFileSystem = CreateObject("Scripting.FileSystemObject")
  For I = 1 To UBound(arrNewFolder)
    strNewFolder = strNewFolder & arrNewFolder(I) & "\"
    if Not oFileSystem.FolderExists(strNewFolder) Then
      Set NewFolder = oFileSystem.CreateFolder(strNewFolder)
    End if
  Next
End Sub
'***** Script slut *****
Avatar billede kimborg Nybegynder
17. januar 2007 - 09:32 #3
hej, opretter scriptet mappenavnet udfra brugernavnet?

det skal nemlig være udfra fullname
Avatar billede Slettet bruger
17. januar 2007 - 09:44 #4
Hvis folder navnet ikke er lig med brugernavn, "gå" brugeren ikke automatisk til sin egen folder.

Ret linien:
Const BrugerNavn = 0
til
Const BrugerNavn = 2

:-)
Avatar billede Slettet bruger
17. januar 2007 - 12:14 #5
Det næste blever vel at sætte fil sikkerhed på de oprettede folders. Det gør dette script.

Brugeren får Change (C)
Administrators får Full Control (F)

strOptinalSecurityGroup, hvis defineret, får Full Control (F)
Du kan rette linien:
Const strOptinalSecurityGroup = ""
til
Const strOptinalSecurityGroup = "Futte"
Hvor Futte er en bruger eller en sikkerheds gruppe, denne bruger/gruppe får får Full Control (F)
Skal det kun være Change (C) så ret linien


'***** Script start *****
Const FtpRoot = "C:\FTP"
Const strOptinalSecurityGroup = ""

Const strInputFile = "Brugere.csv"
Const BrugerNavn = 0
Const FuldtNavn = 2
Const ForReading = 1
strResponse = MsgBox ("Start oprettelsen af FTP Virtual Directories    ", 36, "FTP Virtual Directories")
If strResponse <> 6 then WScript.Quit

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oUserList = oFSO.OpenTextFile (strInputFile, ForReading)
Counter = 0

Set oSite = GetObject("IIS://localhost/MSFTPSVC/1/root")
Set WshNetwork = CreateObject("WScript.Network")
Do Until oUserList.AtEndOfStream
  strNextLine = oUserList.Readline
  arrUserList = Split(strNextLine , ";")
  If Len(arrUserList(BrugerNavn)) > 0 Then
    Call CreateFolder(FtpRoot & "\" & arrUserList(FuldtNavn), arrUserList(BrugerNavn))
    Set oVDir = oSite.Create("IIsFtpVirtualDir", arrUserList(BrugerNavn))
    oVDir.Path = FtpRoot & "\" & arrUserList(FuldtNavn)
    oVDir.AccessRead = True
    oVDir.AccessWrite = True
    oVDir.SetInfo
    Counter =  Counter + 1
  End If
Loop
oUserList.Close

strMessage = "Der er oprettet " & Counter & " FTP Virtual Directories.    " & Chr(13) & Chr(13)
strResponse = MsgBox (strMessage, 64, "FTP Virtual Directories")

Sub CreateFolder(FolderName, strUser)
  arrNewFolder = Split(FolderName, "\")
  strNewFolder = arrNewFolder(0) & "\"
  Set oFileSystem = CreateObject("Scripting.FileSystemObject")
  For I = 1 To UBound(arrNewFolder)
    strNewFolder = strNewFolder & arrNewFolder(I) & "\"
    if Not oFileSystem.FolderExists(strNewFolder) Then
      Set NewFolder = oFileSystem.CreateFolder(strNewFolder)
    End if
  Next

  strCommand = "cmd /c echo Y|Cacls " & Chr(34) & FolderName & Chr(34) & " /P " & strUser & ":C Administrators:F"
  If Len(strOptinalSecurityGroup) > 0 Then
    strCommand = strCommand & " " & Chr(34) & strOptinalSecurityGroup & Chr(34) & ":F"
  End If

  Set WshShell = WScript.CreateObject("WScript.Shell")
  errReturn = WshShell.Run(strCommand, 7, true)

End Sub
'***** Script slut *****
Avatar billede Slettet bruger
17. januar 2007 - 12:21 #6
Fik klikket på Send ved en fejl, fortsætter her:

Skal det kun være Change (C) så ret linien
strCommand = strCommand & " " & Chr(34) & strOptinalSecurityGroup & Chr(34) & ":F"
til
strCommand = strCommand & " " & Chr(34) & strOptinalSecurityGroup & Chr(34) & ":C"
Read
strCommand = strCommand & " " & Chr(34) & strOptinalSecurityGroup & Chr(34) & ":R"


Scriptet sætter Brugerens folder til Fulde navn og Virtual Directory sættes til Brugernavn. Så brugeren havner i sin egen folder når han logger på.

:-)
Avatar billede Slettet bruger
17. januar 2007 - 12:23 #7
Ps.
Hvis du bruger det sidste script, skal du IKKE gøre som nævnt i kommentar 17/01-2007 09:44:54

:-)
Avatar billede kimborg Nybegynder
17. januar 2007 - 12:24 #8
Fandt lige ud af at jeg ikke kan bruge Full Name som foldername, da nogle af dem er allerede i brug, så det bliver brugernavn, gør det en forskel i det sidste script???
Avatar billede kimborg Nybegynder
17. januar 2007 - 12:29 #9
okay, vi omdøbte de andre, så bare glem den sidste
Avatar billede Slettet bruger
17. januar 2007 - 12:30 #10
Ja
Ret linien
Const FuldtNavn = 2
til
Const FuldtNavn = 0

:-)
Avatar billede Slettet bruger
17. januar 2007 - 12:32 #11
OK
Lad mig høre hvordan det gik, også med det forige spørgsmål.
:-)
Avatar billede kimborg Nybegynder
18. januar 2007 - 09:03 #12
det gør jeg, bliver nok først imorgen.
Avatar billede Slettet bruger
21. januar 2007 - 00:02 #13
>kimborg
"Tak" for din tilbage melding.
Hvis du tror at de point, jeg har fået betyder noget, så tager du fejl. jeg har brugt en del tid på at hjælpe dig. Min "løn" er din tilbage melding.
:-(
Avatar billede kimborg Nybegynder
21. januar 2007 - 01:40 #14
jeg arbejdede hjemme fredag og havde derfor ikke mulighed for at teste din script... Og for først testet det tirsdag. Beklager.
Avatar billede kimborg Nybegynder
23. januar 2007 - 11:03 #15
Den del (sidste del) af VB-scriptet der tager sig af at sætte sikkerheden og adgangen for brugeren til den enkelte folder fungerer ikke rigtigt:

Scriptet fjerner alle tidligere brugere og tilføjer vores egen bruger (idXXXXXX) samt Administrator.Gruppen.

Scriptet skal i stedet kun tilføje brugeren idXXXXXX med enten C eller F control - intet andet. Vi har allerede fil-strukturen på plads. Altså alle nødvendige foldere er oprettet på Ftp-serveren.
Avatar billede torben-birk Nybegynder
25. januar 2007 - 12:18 #16
Du skal nøjes med at ændre i ACL'en med parameteren /E
Du skal ændre linien:
strCommand = "cmd /c echo Y|Cacls " & Chr(34) & FolderName & Chr(34) & " /P " & strUser & ":C Administrators:F"

Til:

strCommand = "cmd /c echo Y|Cacls " & Chr(34) & FolderName & Chr(34) & " /E /P " & strUser & ":C"
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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