A blogban leírtak a szerzők saját véleménye, és nem a munkáltatójuké.

Email cím megadása FSRM kvótákban

(A vizsgaidőszak végével most van egy kis lélegzetvételnyi szünet, így most jut idő a félév alatt felgyűlt IT feladatok megoldására.) Adott a Windows Serverbe beépített File Server Resource Manager (FSRM), amivel kvótákat meg fájl kategorizálásokat, jelentéseket meg hasonló feladatokat lehet megcsinálni. Jó bevezetők:

Lehet szépen kvótákat beállítani, majd ha az elér egy bizonyos százalékot, akkor email értesítést lehet küldeni a felhasználóknak. A gond csak az, hogy ez nekünk egy olyan szerveren volt, ami nem tartományi tag. Helyi felhasználóhoz – már amennyire én tudom – pedig nem lehet email címet megadni (ezen minden egyes alkalommal meglepődöm). Úgyhogy a kvóta értesítés tesztelése során a következő hibát naplózta a rendszer:

Log Name:      Application
Source:        SRMSVC
Event ID:      12306
Level:         Error
Description:
A File Server Resource Manager Service email action could not be run. 

Operation:
 Running email action.
 Quota limit reached.
 Processing File Server Resource Manager event

Context:
 Action type: Email Action
 Mail-from address: FSRM@mit.bme
 Mail-reply-to address: FSRM@mit.bme
 Mail-to address:
 Mail-CC address:
 Mail-BCC address:
 Mail subject: Quota limit exceeded
 Mail message text: User SERVER\user has reached the quota limit for quota on d:\quotatest\micskeiz on server SERVER. The quota limit is 100.00 MB and the current usage is 81.50 MB (81% of limit).
 Quota path: d:\quotatest\micskeiz
 Threshold percent: 100

Error-specific details:
 Error: IFsrmEmailExternal::SendMail, 0x8004531c, The parameter 'addresses' cannot be an empty string.
Parameter name: addresses

És tényleg, a Mail-to mező üres, így nem csoda, hogy nem tudja elküldeni. Keresgettem, de mintha ez másnak valahogy nem tűnt volna még fel (talán ez kapcsolódik kicsit a témához, de itt meg később AD-ről beszélnek már: Server 2008: In FSRM, where is does variable [Source Io Owner Email] come from). Úgyhogy valamit kézzel kellett hackelni.

  • A GUI-ról a TO mezőt nem lehet szerkeszteni.
  • Parancssorból (dirquota.exe) lehetne már módosítani a TO értéket is (lásd: Configuration files for notifications in File Server Resource Manager). Azonban a [Source File Owner] makró SERVER\login formában adja vissza a felhasználót, így azt közvetlenül nem lehet felhasználni még akkor se, ha login@domain formájú email címeink vannak.
  • Maradt tehát az, hogy valami saját parancsot hívunk meg.

Egy egyszerű PowerShell script elvégzi a feladatot. A következőkre kell figyelni:

  • Command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • Command arguments: -command d:\scripts\Send-MailMessage2.ps1 -userNameWithDomain ‘[Source Io Owner]’ -quotaRemotePath ‘[Quota Remote Paths]’ -quotaLimit ‘[Quota Limit MB]’ -quotaUsed ‘[Quota Used MB]’ -quotaTreshold ‘[Quota Threshold]’
  • Az argumentumoknál tehát ‘ ‘ karaktereket kell használni a stringeknél és nem “-t. Ezen kívül nem lehet script blockot ({} közötti parancsok) átadni a powershell.exe-nek ha nem powershellből hívjuk meg
  • A parancsot Local Service-ként nem futtatta nekem le, csak Local Systemként.

Végezetül a scipt:

# Name:   Send-MailMessage2
# Author: Micskei Zoltán
# Date:   2010.06.29.
# Desc:   sends a custom quota notification
# Param:
#
 
param(
 [string] $userNameWithDomain,
 [string] $quotaRemotePath,
 [string] $quotaLimit,
 [string] $quotaUsed,
 [string] $quotaTreshold
)
 
$DEFAULT_DOMAIN = "mydomain.hu"
$FROM = "FSRM@mydomain.hu"
$SMTP_SERVER = "localhost"
$SERVER_ALIAS = "\\fileserver.mydomain.hu"
$SERVER_NAME = "\\SERVER"
 
if ( ! $userNameWithDomain.Contains("\") )
{
 Write-Error("userNameWithDomain is in wrong format, does not contain \")
 return
}
 
$to = [String]::Format("{0}@{1}", ($userNameWithDomain.Split("\"))[1], $DEFAULT_DOMAIN)
$quotaRemotePath = $quotaRemotePath.Replace($SERVER_NAME,$SERVER_ALIAS)
 
$subject = "Kvota tullepes a $quotaRemotePath konyvtaron"
 
$body = "Tullepted a $quotaLimit MB megengedett kvota $quotaTreshold %-at a $quotaRemotePath konyvtaron. Aktalis hasznalat: $quotaUsed MB. Lassan torolj valamit a megosztasrol!"
 
Send-MailMessage -To $to -Subject $subject -From $FROM -Body $body -SmtpServer $SMTP_SERVER
 
Write-output "Message sent to $to"

Azért jó lett volna, ha van valami beépített megoldás erre. Megkérdeztem a Technet fórumon,de ott se tudtak jobbat:)

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>