En otitelerad blog

Not just another Systems Administrator weblog – Fast på svenska

Aktivering av Key Management Server (KMS)

lämna en kommentar »

I och med lanseringen av Windows Vista och Windows Server 2008 så gjorde Microsoft om aktiveringen av Volymlicensnycklarna till Windows.

Det finns nu två olika typer av nycklar, KMS och MAK. KMS nycklar aktiveras mot en Key Management Server som installeras/aktiveras internt på företaget. MAK nycklar fungerar lite som tidigare, alltså aktiveras direkt mot Microsoft.

Installation/Aktivering av KMS

Denna process görs enklast på en domänkontrollant för sin domän. På servern kör man sedan följande kommando:

  1. slmgr.vbs /ipk <KmsKey> (<KmsKey> ersätts förståss med den KMS nyckel man har från sitt Volymlicens avtal.
  2. slmgr.vbs /ato (körs sedan för att aktivera KMS nyckeln/servern mot Microsoft.

Att tänka på är att det för Windows Vista/7 krävs 25 datorer som kör Windows Vista/7 eller Windows Server 2008/R2 tillsammans för att aktivering mot en KMS skall fungera. För Windows Server 2008/R2 ensamt krävs det  minst 5 servrar.

För klienter som sedan ska aktiveras genom KMS servern ska man använda följande publika nycklar från Microsoft.

KMS Client Setup Keys:

Windows Vista Business – YFKBB-PQJJV-G996G-VWGXY-2V3X8
Windows Vista Business N – HMBQG-8H2RH-C77VX-27R82-VMQBT
Windows Vista Enterprise – VKK3X-68KWM-X2YGT-QR4M6-4BWMV
Windows Vista Enterprise N – VTC42-BM838-43QHV-84HX6-XJXKV

Windows 7 Professional – FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
Windows 7 Professional N – MRPKT-YTG23-K7D7T-X2JMM-QY7MG
Windows 7 Enterprise – 33PXH-7Y6KF-2VJC9-XBBR8-HVTHH
Windows 7 Enterprise N – YDRBP-3D83W-TY26F-D46B2-XCKRJ
Windows 7 Enterprise E – C29WB-22CC8-VJ326-GHFJW-H9DH4

Windows Server 2008 Datacenter – 7M67G-PC374-GR742-YH8V4-TCBY3
Windows Server 2008 Datacenter without Hyper-V – 22XQ2-VRXRG-P8D42-K34TD-G3QQC
Windows Server 2008 for Itanium-Based Systems – 4DWFP-JF3DJ-B7DTH-78FJB-PDRHK
Windows Server 2008 Enterprise – YQGMW-MPWTJ-34KDK-48M3W-X4Q6V
Windows Server 2008 Enterprise without Hyper-V – 39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 Standard – TM24T-X9RMF-VWXK6-X8JC9-BFGM2
Windows Server 2008 Standard without Hyper-V – W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Web Server 2008 – WYR28-R7TFJ-3X2YQ-YCY4H-M249D

Windows Server 2008 R2 HPC Edition – FKJQ8-TMCVP-FRMR7-4WR42-3JCD7
Windows Server 2008 R2 Datacenter – 74YFP-3QFB3-KQT8W-PMXWJ-7M648
Windows Server 2008 R2 Enterprise – 489J6-VHDMP-X63PK-3K798-CPX3Y
Windows Server 2008 R2 for Itanium-Based Systems – GT63C-RJFQ3-4GMB6-BRFB9-CB83V
Windows Server 2008 R2 Standard – YC6KT-GKW9T-YTKYR-T4X34-R7VHC
Windows Web Server 2008 R2 – 6TPJF-RBVHG-WBW2R-86QPH-6RTM4

Mer information hittade jag på följande sidor:

Key Management Server (KMS) Fast Activation Walkthrough
Volume Activation Deployment Guide
KMS Updates to Support Windows Server 2008 R2 and Windows 7
An update is available for Windows Vista and for Windows Server 2008 to extend KMS activation support for Windows 7 and for Windows Server 2008 R2

Written by marfelt

november 2, 2009 vid 15:12

Postat i Microsoft Windows

Tagged with , , ,

Att leda en grupp nördar (IT Professionals)

lämna en kommentar »

Idagens skörd av blogg inlägg så hittade jag denna intressanta artikel, The unspoken truth about managing geeks, från bloggen: VM /ETC.

Ett riktigt guldkorn tyckte jag. Det var en hel del i det Jeff Ello skrev i artikeln som jag tyckte passade väldigt bra in på mig själv.

Lustigt nog är jag själv ett House fan också.

Jag tog friheten att kopiera några citat från artikeln:

It’s not about being right for the sake of being right but being right for the sake of saving a lot of time, effort, money and credibility.

 

IT pros are sensitive to logic — that’s what you pay them for. When things don’t add up, they are prone to express their opinions on the matter, and the level of response will be proportional to the absurdity of the event. The more things that occur that make no sense, the more cynical IT pros will become.

If you want to get your IT pros more involved, you should deal with the problems laid out above and then train your other staff how to deal with IT. Users need to be reminded a few things, including:

    * IT wants to help me.
    * I should keep an open mind.
    * IT is not my personal tech adviser, nor is my work computer my personal computer.
    * IT people have lives and other interests.

Written by marfelt

september 21, 2009 vid 10:51

Postat i Ledarskap

Tagged with , , ,

Office 2010:The Movie

lämna en kommentar »

Office 2010 är ju på gång och Microsoft har natruligtvis lanserat en special sajt. http://www.office2010themovie.com … geek humor på hög nivå.

Trailern skrattade jag gott till. Hittade den som notis på slashfilm.com

Written by marfelt

juli 10, 2009 vid 10:44

Postat i Microsoft

Tagged with

PowerShell: Notifiera användare att byta lösenord

lämna en kommentar »

Att ha en policy som kräver att dator användare i en domän byter lösenord varje eller var annan månad är ett måste, så att man får en viss förhöjd säkerhet. För de flesta användare följer ju ett rätt enkelt lösenord. Men en sådan policy kan också skapa lite problem när man har användare som inte loggar in så ofta, och som använder till exempel VPN.

Jag har länge velat lära mig mer om PowerShell, så jag tänkte att detta kunde vara ett perfekt tillfälle att göra just detta. Jag insåg dock snabbt att skapa ett skript för att notifiera användarna skulle vara lite överkurs för mig. Så jag sökte runt på Internet och hittade faktiskt ett skript, som jag kunde modifiera för att passa mina behov.

Kopiera texten mellan ##START## och ##END##.

##START##
Function Get-UTCAge {
  #get date time of the last password change
      Param([int64]$Last=0)
      if ($Last -eq 0) {
          write 0
      } else {
          #clock starts counting from 1/1/1601.
          [datetime]$utc="1/1/1601"
          #calculate the number of days based on the int64 number
          $i=$Last/864000000000
          #Add the number of days to 1/1/1601
          #and write the result to the pipeline
          write ($utc.AddDays($i))
      }
  } # end Get-UTCAge function
Function Get-PwdAge {

Param([int64]$LastSet=0)
  if ($LastSet -eq 0) {
      write "0"
  } else {
      #get the date the password was last changed
      [datetime]$ChangeDate=Get-UTCAge $LastSet
      #get the current date and time
      [datetime]$RightNow=Get-Date
      #write the difference in days
      write $RightNow.Subtract($ChangeDate).Days
  }
} #end Get-PwdAge function

#main code
#define some constants

New-Variable ADS_UF_ACCOUNTDISABLE 0×0002 -Option Constant
New-Variable ADS_UF_PASSWD_CANT_CHANGE 0×0040 -Option Constant
New-Variable ADS_UF_DONT_EXPIRE_PASSWD 0×10000 -Option Constant
New-Variable ADS_UF_PASSWD_EXPIRED 0×800000 -Option Constant

$strfilter="(&(objectCategory=person)(objectClass=user))"

#—————————————————–
# Change strADSI to limit the search for users with expirering passwords
#—————————————————–
#$strADSI="LDAP://OU=OU-NAME,DC=DOMAIN,DC=COM" (Change to limit search to one OU structure)
$strADSI=""    (Default: search whole domain)
#—————————————————–

$objDomain = New-Object System.DirectoryServices.DirectoryEntry($strADSI)

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$users=$objSearcher.findAll()

foreach ($user in $users) {

if (-not $user.path) {
  Write-Warning "Could not find $samaccountname"
  Return
}

$user | ForEach-Object {

#get password properties from useraccountcontrol field
  if ($_.properties.item("useraccountcontrol")[0] -band $ADS_UF_DONT_EXPIRE_PASSWD) {
      $pwdNeverExpires=$True
   }
   else {
      $pwdNeverExpires=$False
   }
   #Password expired should be calculated from a computed UAC value
   $user=$_.GetDirectoryEntry()
   $user.psbase.refreshcache("msDS-User-Account-Control-Computed")
   [int]$computed=$user.psbase.properties.item("msDS-User-Account-Control-Computed").value
   if ($computed -band $ADS_UF_PASSWD_EXPIRED) {
      $pwdExpired=$True
   }
   else {
      $pwdExpired=$False
   }
   if ($_.properties.item("useraccountcontrol")[0] -band $ADS_UF_ACCOUNTDISABLE) {
      $accDisabled=$True
   }
   else {
      $accDisabled=$False
   }

#has email check
   if ($_.properties.item("mail")[0] -eq $Null) {
      $mailAllowed=$False
   }
   else {
      $mailAllowed=$True
   }
   #check if user can change their password
   if ($_.properties.item("useraccountcontrol")[0] -band $ADS_UF_PASSWD_CANT_CHANGE) {
      $pwdChangeAllowed=$False
   }
   else {
      $pwdChangeAllowed=$True
   }

#—————————————————–
   #check if password age is more och equal to 46 days.
   #change 46 for a number of days that suites your needs.
   #—————————————————–
   if ((Get-PwdAge $_.properties.item("pwdlastset")[0]) -ge 46) {
      $pwdAboutExpire=$True
   }
   else {
      $pwdAboutExpire=$False
   }
   #—————————————————–

if (-not $accDisabled -and $mailAllowed -and $pwdAboutExpire -or $pwdExpired) {

#create a custom object for the account and password properties
      $obj=New-Object PSObject
      #add properties to the object
      $obj | Add-Member -MemberType NoteProperty -Name "<br/>Name" -Value $_.properties.item("name")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "DN" -Value $_.properties.item("distinguishedname")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "samAccountName" -Value $_.properties.item("samaccountname")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "Description" -Value $_.properties.item("description")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "Email" -Value $_.properties.item("mail")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "<br/>AccountCreated" -Value $_.properties.item("whencreated")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "<br/>AccountModified" -Value $_.properties.item("WhenChanged")[0]
      #$obj | Add-Member -MemberType NoteProperty -Name "AccountDisabled" -Value $accDisabled
      $obj | Add-Member -MemberType NoteProperty -Name "<br/>LastLogon" -Value (Get-UTCAge $_.properties.item("lastlogon")[0])
      $obj | Add-Member -MemberType NoteProperty -Name "<br/>PasswordLastChanged" -Value (Get-UTCAge $_.properties.item("pwdlastset")[0])
      $obj | Add-Member -MemberType NoteProperty -Name "<br/>PasswordAge" -Value (Get-PwdAge $_.properties.item("pwdlastset")[0])
      #$obj | Add-Member -MemberType NoteProperty -Name "PasswordExpired" -Value $pwdExpired
      #$obj | Add-Member -MemberType NoteProperty -Name "PasswordNeverExpires" -Value $pwdNeverExpires
      #$obj | Add-Member -MemberType NoteProperty -Name "PasswordChangeAllowed" -Value $pwdChangeAllowed
      $obj | Add-Member -MemberType NoteProperty -Name "<br/>BadPasswordTime" -Value (Get-UTCAge $_.properties.item("BadPassWordTime")[0])
      #write object to the pipeline
      #—————————————————–
      # Change: emailFrom to match your environment
      #—————————————————– 
      $emailFrom = "noreply@domain.com"

       #—————————————————–
      # Change: emailTo to match your environment, this reads the entered email address from the user properties in Active Directory
      #—————————————————–
      $emailTo =$_.properties.item("mail")[0]
      #—————————————————–
      $subject = "Change your password reminder"
      $body = "<html><body>Your password is about to expire or has expired, please change your password as soon as possible. This email will be sent every day until the password has been changed. If you have any issues, then please contact IT Department. <br/><br/>" + $obj + "</body></html>"
      #—————————————————–
      # Change: smtpServer to match your environment
      #—————————————————– 
      $smtpServer = "smtp.domain.com"
      #—————————————————–
      $smtp = new-object Net.Mail.SmtpClient($smtpServer)
      $msg = new-object Net.Mail.MailMessage($emailFrom,$emailTo,$subject,$body)
      $msg.IsBodyHTML = $true
      $smtp.Send($msg)
      #write $obj
  }
} #end foreach
}

##END###

Skriptet schema lagde jag med “Task Scheduler” på en Windows Server 2008 “member” server i domänen. Användare som har ett lösenord som är 46 dagar gammalt eller äldre, kommer att få ett e-post meddelande som påminner dem att byta lösenord.

Referens:
Skriptet hittade jag i följande forum tråd: Powershell ms-DS-User-Account-Control-Computed (Jag fick dock modifiera det för att passa mina behov).

Written by marfelt

juli 4, 2009 vid 10:59

Skriva en katastrofplan för IT

lämna en kommentar »

Detta projekt började jag med för nästan ett år sedan, jag tror faktiskt att det var förra sommaren som jag fick den uppgiften av min chef. I mitt arbete som System Administratör har jag nästan hela tiden tankar bak i huvudet på vad jag måste göra om något skulle hända med IT miljön jag administrerar. Men att skriva en katastrofplan, eller Disaster Recovery Plan på Engelska, var verkligen inget man gjorde i en handvändning.

Nu har inte detta varit det högst prioriterade projektet men det har ändå tagit tid att undersöka vad ett sådant dokument, bör, måste och ska innehålla. Det var där jag började, vad skulle dokumentet innehålla. Men efter att jag hade börjat söka och läsa på Internet, så insåg jag snabbt att det krävdes lite mer tanke och analys bakom dokumentet.

De första frågorna jag ställde mig själv var: vad ska detta dokument beskriva? hur detaljerat ska det vara, steg för steg guide hur man felsöker VMware eller Exchange som har kraschat? Min chef tror jag från början ville ha en steg för steg guide, men det insåg jag att det är inte inom ramen för en katastrofplan. (Det har i stället resulterat i flera “Quick Guides”).

Men åter till katastrofplanen.

Jag började mina stapplande steg med att läsa två artiklar som jag hittade på Wikipedia; Disaster recovery och Business continuity planning. Där tyckte jag att den sista artikeln gav mest, men det var ändå inte riktigt det jag sökte efter. Dessa två artiklar beskriver mer hur man som ett helt företag ska agera vid en katastrof, inte hur en enskild enhet eller avdelning ska agera. Men det gav ändå information om vad det slutgiltiga dokumentet ska innehålla.

Efter lite mer efterforskningar så kom jag fram till att dessa ämnen/rubriker bör täckas i dokumentet:

  • Introduktion – En introduktion till själva dokumentet och varför det har blivit framtaget. Här kan man också nämna lite kort om den process som lätt till framtagandet av dokumentet.
  • Antaganden – De antaganden man har tagit. Till exempel vilka sorter/typer av katastrofer man tror sig kunna utsättas för. Det kan också vara begränsningar, som att dokumentet enbart är för om något händer med en maskin eller utrustning av en visst.
  • Distribution – Vilka personer som bör ta del av dokumentet. Använd gärna titlar i stället för personernas namn. Det gör det enklare att underhålla dokumentet.
  • Team – De personer som sedan ska arbeta aktivt vid en katastrof. Där bör det vara en speciell grupp som får ansvaret att avgöra när planen måste aktiveras.
  • Ansvar – Där klargörs det var varje team har för roll och vad de har för ansvar.
  • I händelse av en katastrof – In the event of a disaster. Det sista delen, men den viktigaste delen och som ska beskriva vad de olika teamen ska göra vi en katastrof.

Den sista delen, I händelse av en katastrof, har jag dock själv kvar att skriva. Just för att de blev den svåraste delen att beskriva i text. Jag får återkomma, när jag har lyckats skriva klart detta dokument. För hoppnings vis ska det inte ta ytterligare ett år.

Till sist, jobbar man för ett större företag så är min är jag rätt övertygad över att de tar en liten annan “approach” på framtagandet av en katastrofplan, men är resurserna inte så stora så får man nöja sig med vad som finns på Internet.

Mitt tipps är ändå att börja med att söka på Internet. Det finns de sajter där man kan köpa färdiga dokument, men jag tror inte det är värt pengarna. De är ändå så generella att de troligen måste skrivas om, och då kan man lika gärna skriva sitt eget dokument.

Ps. En mall som jag gillade var MIT’s publika BCP från 1995, tyvärr passade den inte in i det dokument som jag kom fram till att jag måste skriva. Ds.

Written by marfelt

juni 12, 2009 vid 19:56

Installation av McAfee appliance

lämna en kommentar »

Närmare bestämt en McAfee Email and Web Security Appliance 3100

Det enda som inte var enkelt med att installera denna var själva monteringen av den i racket i serverhallen.

De första konfigurations stegen krävde tillgång till skärm och tangentbord, det var endast för att starta upp den en första gång och ange nätverks inställningarna. Sedan sker all annan administration och konfiguration av den via webbläsaren. (Märkte dock att det blev lite java-skript fel ibland i Internet Explorer 7).

Webbgränssnittet kan man inte direkt klaga på, som med allt annat så används Ajax så att webbapplikationen ska likna ett installerat program.

Just denna 3100 som jag satte upp skall agera e-post proxy. Men trots det så var det inte många inställningar som behövdes göras för att komma igång. Denna ersätter också en tidigare MailMarshal SMTP installation, så det blir intressant att se hur står sig mot varandra. Förhoppnings vis till det bättre.

Det intressanta med McAfee’s produkt är att den även finns som VMware virtuell maskin. Jag kommer nog att gå över till att använda virtuella maskiner i stället för denna 3100 i höst, då kommer 3100 i stället att användas som webb filter.

Written by marfelt

juni 11, 2009 vid 20:23

Postat i Säkerhet

Tagged with , , , ,

Hur svårhanterligt är egentligen SAP?

lämna en kommentar »

Genom åren har jag läst och hört om detta system, och för en som mig, som aldrig har jobbat med SAP så verkar det vara ett riktigt mastodont system.

Senaste året har det gått att läsa om Försäkringskassan och deras implementering av SAP, och idag går det att läsa på IDG.se, Systemkaos, om svenska Försvarsmaktens nya SAP system. Pratar inte myndigheterna med varandra, eller tar in några som helst kund referenser? 2,4 miljarder av våra skattepengar som har satsats på ett system som inte kan hantera hemlig information, det låter ju helt galet.

Nu vet jag ju inte hur mycket de hade budgeterat för detta, men Försäkringskassan verkade kasta en hög med pengar i sjön.

För mig känns det som att om man har bestämt sig för att satsa på SAP, så måste man verkligen ha sten koll på vad man har för krav på systemet. Det verkar ju inte Försäkringskassan och Försvarsmakten ha, för det/de konsultföretag som sen ska genomföra detta verkar INTE ha någon som helst koll på vad kunden vill ha.

Konsultföretagen verkar då inte vara dumma, utan lunkar på och mjölkar oss skattebetalare på ännu mer pengar.

Dagens IDG.se artikel: Systemkaos

Samt några gamla artiklar jag hittade:

Computer Sweden: SAP tar hem alla affärer
di.se: Tveksam miljardrullning på Försäkringskassan

Written by marfelt

juni 5, 2009 vid 12:53

Postat i System

Tagged with ,

A problem occurred while trying to use your mailbox

lämna en kommentar »

Detta var ett litet intressant problem som jag stötte på idag.

Användaren i fråga fick upp detta när han försökte logga in i webb mailen på Exchange 2007 SP1.

Efter att ha provat själv att logga in som användaren kunde jag få tag i detaljerna för felmeddelandet, och en snabb sökning hos Microsoft så hittade jag detta: http://support.microsoft.com/kb/941146

Efter att ha kört: Set-Mailbox User_Name –ApplyMandatoryProperties så kunde användaren logga.

I mitt fall så kunde jag även se i Exchange Management Console att denna specifika användare visades som en “Legacy mailbox”, men efteråt så visas den nu som en vanlig mailbox.

Written by marfelt

juni 3, 2009 vid 11:10

Postat i Servrar

Tagged with ,

Microsoft .NET Framework Assistant (ClickOnce) Firefox Extension

lämna en kommentar »

Jag har länge undrat vad den gör, någon som vet vad den ska användas till?

Den bör man i alla fall stänga av. På IDG.se kan man läsa att den innehåller en sårbarhet som gör det möjligt för webbplatser att installera fientlig kod, via Firefox, utan att användaren är medveten om det.

Annoyances.org skrev om den redan den 27:e februari 2009. Läs mer här:
http://annoyances.org/exec/show/article08-600

Written by marfelt

juni 1, 2009 vid 17:23

Postat i Säkerhet

Tagged with , ,

Slumpmässiga omstarter på HP server

lämna en kommentar »

Detta problem fick jag på en HP ProLiant BL460c efter att jag hade installerat "ProLiant Support Pack 8.22”.

I “Integrated Management Log” loggades detta meddelande:

  • ASR Detected by System ROM

Vid samma tidpunkt loggades följande i “Integrated Lights-Out 2 Log”

  1. 05/01/2009 00:00:00 BMC IPMI Watchdog Timer Timeout: Action=System Power Reset.
  2. 05/01/2009 00:00:00 Server power removed.
  3. 05/01/2009 00:0:00 Server power restored.

Och även i Windows Server Event Viewer

  1. hpqilo2 NetFN 0×36, command 0×2 timed out
  2. hpqilo2 NetFN 0×6, command 0×25 timed out
  3. hpqilo2 GetDeviceID failed: 0×0

Hittade dessa två sidor när jag sökte på meddelandet från Event Viewer:

HP IT Resource Center forums – Sever fronzen, hang an reboot ASR EventID 57 hpqilo2
Random Reboots on HP Hardware – Error ID 57

De två gav lite olika svar, det jag gjorde var att nedgradera “HP ProLiant iLO 2 Management Controller Driver”, från version 1.9.0.0 till 1.8.0.0. Jag hoppas nu att HP kan släppa en uppdaterad version som fungerar.

Written by marfelt

maj 26, 2009 vid 9:29

Postat i Servrar

Tagged with , ,