Configurar cuotas de File Server Resource Manager (FSRM) con tamaños decimales en PowerShell permite asignar espacio de forma milimétrica, aprovechando la capacidad real del almacenamiento y evitando el desperdicio de gigabytes enteros que quizá nunca se usen.
Motivación — ¿Por qué usar valores fraccionarios?
En entornos donde se agregan discos poco a poco o se comparte un volumen entre varios equipos, a veces quedan porciones “huerfanitas” de espacio. Asignar una cuota de 1,48 GB en lugar de 1 GB o 2 GB le saca provecho al 100 % del disco sin penalizar a otros proyectos. Además, puede cumplir requisitos de auditoría o contabilidad que exigen reservar cantidades exactas asociadas a contratos o presupuestos.
Requisitos previos
- Windows Server 2012 R2 o posterior (el ejemplo se validó en 2022).
- Rol «File Server Resource Manager» instalado.
- Sesión de PowerShell con privilegios de administrador.
Cómo interpreta FSRM el parámetro -Size
El cmdlet New‑FsrmQuota
acepta un valor numérico seguido opcionalmente de un sufijo de unidad:KB, MB, GB, TB. Cuando no se indica sufijo, el número se lee en B. El motor de FSRM internamente siempre calcula en bytes enteros, de modo que los decimales se convierten a la unidad inferior sin perder precisión.
# Sintaxis genérica
New-FsrmQuota -Path <Carpeta> -Size <Valor>[KB|MB|GB|TB] -SoftLimit:$false
Por ejemplo, para 1,48 GB:
New-FsrmQuota -Path "D:\Datos\Ventas" -Size 1.48GB
¿Por qué puede fallar el comando?
La mayoría de los errores reportados en foros se deben a dos causas:
- Separador decimal incorrecto. En muchos países de configuración regional “es‑ES”, la coma (
,
) es el separador decimal. Sin embargo, PowerShell exige el punto (.
) dentro de los parámetros de cmdlets. - Versión antigua del módulo FSRM. Los sistemas anteriores a Windows Server 2012 R2 tenían limitaciones y parches pendientes. Hoy, con Build 9600 o superior, el soporte es completo.
Solución con separador correcto
# Incorrecto para PowerShell
New-FsrmQuota -Path "D:\Folder" -Size 1,48GB # → Error de sintaxis
Correcto
New-FsrmQuota -Path "D:\Folder" -Size 1.48GB
Convertir decimales a bytes de forma explícita
Si se prefiere la precisión absoluta o se usan scripts que generan valores en bytes —por ejemplo, desde una hoja Excel—, puede hacerse la conversión manual:
$quotaSizeGB = 1.48
$sizeInBytes = [int64]($quotaSizeGB * 1GB) # 1GB = 1 073 741 824 bytes
New-FsrmQuota -Path "D:\Folder1" -Size $sizeInBytes
En sistemas de 64 bits el rango de [int64]
permite valores de hasta 8 EB, muy por encima de lo que ofrece hoy cualquier cabina SAN.
Tabla de referencia rápida
Valor decimal | Ejemplo de código | Equivalente en bytes |
---|---|---|
0,5 GB | -Size 0.5GB | 536 870 912 |
1,25 GB | -Size 1.25GB | 1 342 177 280 |
1,48 GB | -Size 1.48GB | 1 590 652 928 |
2,75 GB | -Size 2.75GB | 2 953 482 240 |
Script modular para despliegues masivos
Cuando existen cientos de carpetas, escribir una línea por cuota resulta poco práctico. El siguiente script lee un CSV con el path y el valor decimal e implementa las cuotas en lotes de forma idempotente (se puede ejecutar varias veces sin dañar las existentes).
# CSV: Ruta,CuotaGB
D:\Proyectos\Alpha,1.48
D:\Proyectos\Beta,2.75
Import-Csv .\Cuotas.csv | ForEach-Object {
$ruta = $_.Ruta.Trim()
$valorGB = [double]$_.CuotaGB
$bytes = [int64]($valorGB * 1GB)
if (Get-FsrmQuota -Path $ruta -ErrorAction SilentlyContinue) {
Set-FsrmQuota -Path $ruta -Size $bytes
Write-Host "Cuota actualizada en $ruta a $valorGB GB"
}
else {
New-FsrmQuota -Path $ruta -Size $bytes -SoftLimit:$false
Write-Host "Cuota creada en $ruta con $valorGB GB"
}
}
Validación en la interfaz gráfica
Tras ejecutar cualquier método, abra Server Manager → File and Storage Services → FSRM → Quota Management → Quotas. Verá la columna Limit con el número fraccionario exacto que solicitó. También puede hacer clic en la cuota y pulsar F2 para confirmar que el valor decimal persiste.
Compatibilidad entre versiones de Windows Server
Mientras que Windows Server 2008 R2 originalmente requería hotfixes para cantidades decimales mayores de 2 TB, las versiones modernas (2012 R2, 2016, 2019, 2022) lo admiten de forma nativa. Si administra un bosque mixto, actualice los nodos legados o limite los scripts a enteros en esos hosts.
Alertas, plantillas y notificaciones
El hecho de usar decimales no altera las opciones de correo, eventos o plantillas. Puede crear una plantilla estándar (100 GB Soft Quota, por ejemplo) y luego modificar el tamaño antes de asignarla:
$t = Get-FsrmQuotaTemplate -Name "100 GB Soft Quota"
New-FsrmQuota -Path "D:\Recursos" -Template $t -Size 99.5GB
La plantilla hereda los umbrales (por ejemplo al 85 % y 95 %), así que recibirá alertas cuando el 85 % de 99,5 GB sea alcanzado (84,575 GB), no cuando llegue a 85 GB exactos.
Preguntas frecuentes
¿Puedo especificar -Size 0
para que solo se registre el uso sin limitar?
Sí. El valor 0
crea una cuota «monitorización» (auto apply — monitor only), adecuada para establecer líneas base y migrar a una política restrictiva más adelante.
¿Existen diferencias entre GB decimales (SI) y GiB binarios?
FSRM usa la convención binaria (1 GB = 1 073 741 824 bytes). Por eso 1GB
en PowerShell equivale a 1,073 GB
en marketing decimal (1 000 000 000
bytes). Ajuste el factor si su hoja de cálculo está en unidades decimales.
¿Se pueden usar valores menores de 1 MB?
Desde Windows Server 2016 puede establecer cuotas tan pequeñas como 1 KB. No obstante, el rendimiento de lectura de valores tan bajos suele ser nulo; se recomienda un mínimo de 1 MB en producción.
¿Cómo listar todas las cuotas con sus tamaños en GB exactos?
Get-FsrmQuota | Select Path,@{N="SizeGB";E={[math]::Round($_.Size/1GB,2)}}
Buenas prácticas finales
- Mantener las cuotas en un repositorio Git o DSC para auditoría y despliegues repetibles.
- Nombrar carpetas y cuotas de forma coherente (
Depto‑Finanzas‑1.48GB
) para reconocerlas en la consola. - Revisar al menos trimestralmente los directorios sin movimiento; las cuotas muy bajas pueden frenar proyectos que crecen rápido.
- Configurar alertas de correo en los umbrales apropiados (80 % o 90 %).
- Documentar la unidad de medida (binaria) en los procedimientos internos para evitar malentendidos con los equipos de contabilidad.
Conclusión
Usar tamaños decimales en New‑FsrmQuota
es totalmente compatible y abre un abanico de escenarios granulares: desde la asignación quirúrgica de espacio hasta la migración progresiva a cuotas rígidas. Combine la precisión de los valores fraccionarios con scripts automatizados y alertas inteligentes para mantener su almacenamiento bajo control sin sacrificar flexibilidad.