Powershell til opsætning af udviklingsserver

I forbindelse med at jeg har en udviklingsserver liggende på Azure, har jeg behov for få automatiseret opsætningen af en FTP-server, med hvad deraf følger, herunder åbne porte i firewall, samt oprettelse af en ny bruger, der skal knyttes til en gruppe på serveren. 

Man kan knytte startuptasks til konfigurationen af et Azure projekt (i ServiceDefinition.csdef under /ServiceDefinition/WebRole/Startup). Disse vil blive kørt når serveren starter og man kan bla. benytte batchfiler og powershell-scripts.

Derfor har jeg kastet mig over powershell som metoden til at få disse opgaver udført, men jeg har et lille problem: Jeg har kun ganske lidt kendskab til PS, så det er lidt af en opgave at få støvet alle de forskellige elementer op!

Der er visse ting man skal forholde sig til, dels er der funktionen af startup tasks i Azure, dels er der funktionsmåden og de sikkerhedslåse der er indbygget i PS pr. default. I først omgang vil jeg prøve at koncentrere mig om, at få PS scriptet til at gøre de (fleste af de) ting jeg gerne vil opnå. Pt. har jeg flg. konkrete opgaver:

  • Oprette en ny bruger der kan køre FTP
  • Knytte denne bruger til en gruppe som kan benytte FTP-serveren
  • Installere FTP serveren
  • Aktivere FTP-servicen for default websitet i IIS, herunder
    • ændre portbindingerne for port 21 til FTP i stedet for HTTP
    • oprette tilladelser for brugere til at koble på ftp-serveren
  • Åbne for porte i firewall'en, således der kan køres passiv FTP mod serveren.

Mht. punkt 1, så er jeg kommet frem til flg.:

$computer = [ADSI]"WinNT://."
$usr = $computer.Create("User", "ftpbruger")
$usr.setpassword("password")
$usr.put("fullname", "FTP Bruger")
#Don't expire user + user can't change password
$usr.UserFlags[0] = $usr.UserFlags[0] -bor 0x10040
$usr.setinfo()

Mht. punkt 2, så er jeg foreløbig kommet frem til flg:

$grp = [ADSI]"WinNT://$env:computername/Administrators"
$grp.Add("WinNt://$env:computername/ftpbruger") 

dog har jeg ikke set dette fungere endnu (selvom jeg har set eksemplet flere steder), så det er noget jeg lige skal have testet lidt mere på...

Mht. punkt 3, så burde dette løfte denne opgave:

Import-Module ServerManager
Add-WindowsFeature -Name Web-Ftp-Server,Web-Ftp-Service 

Derefter er jeg lidt blank, men jeg søger videre. Indtil videre, så er det jo halvdelen af selve opsætningsopgaven der er løst, så det skal nok blive godt. 

Dernæst kommer udfordringen så med at få sat startuptasks op i mit Azure-projekt - men den tid den glæde :-)

Jeg forventer at opdatere denne artikel med løsninger på de sidste trin, når jeg finder ud af hvordan de skal løses. Indtil da smid en kommentar, hvor du har løsninger på disse eller hvis du har rettelser til de 3 første trin jeg har illustreret ovenfor.

Comment