La nVidia no es sana @ YoVirtualizador | 2023-12-25T06:00:00+01:00 | 5 minutos de lectura | Actualizado en 2023-12-25T09:00:00+01:00

Pues otra vez me veo en garras de proveedores sin capacidad, de comerciales sin voluntad, y de lusers que no saben hablar y caminar a la vez.

Vuelve el BOFH.

La nVidia no es sana

Resulta que tengo una instalación que voy a decomisar, pero tengo unos usuarios que se resisten.
También resulta que tengo unos comerciales, comerciales de proveedores, que están mucho más interesados en vender que en otra cosa.

Tengo una infraestructura de VDI que está sujeta con puntales, rodeada de sacos de arena y con señales de riesgo NBQ, pero que aún da soporte con su antaño poderosa nVidia Grid K2, desde VMware a Citrix XenServer a Windows 2016 para las cosas de pintar de los pintamonas.
Estaba muy bien en su día, una infraestructura potente, un montaje bastante majo, todo integrado en VDI… VDI cítrico para lusers con mac y pretensiones.

Pues resulta que, gracias a la migración que estoy haciendo, consolidar absolutamente todos los equipos en nube, Azure, y Microsoft 365, sobre plataforma PC totalmente estandarizada, pues esta herramienta queda como elemento legacy fuera de soporte.
Y como tal, su licenciamiento suspendido.

Se masca la tragedia

La parte de VMware no me preocupa. Queda licencia.
La de Citrix, y de Microsoft, lo mismo. Licenciados.
Con los aplicativos de diseño, no me preocupo. Son hotseat por lo que no hay problema por ahí.
Pero ¿y la nVidia Grid?
Tengo a una flota de comerciales que se niegan a renovar una licencia si no cambio la tarjetería de los servidores. Cosa que no voy a hacer, puesto que voy a apagarlo en un par de meses.
Si no me dan lo que quiero por las buenas, recurriré a cosas más expeditivas, perdiendo ellos, y no perdiendo yo, por lo que hace 4 meses, y justo hasta hace unos días que di de baja esta infraestructura y migrados sus lusers (y retirados unos cuantos mac del mundo).

Y por su puesto, como siempre, disclaimer, pliego de descargo o como lo queramos llamar.

Aviso: Este procedimiento lo libero con fines pedagógicos y de prueba. No es legítimo en entornos de producción.
Aviso:
Aviso: Este procedimiento funciona con las máquinas que usan el software de nVidia Grid en Windows.
Aviso:
Aviso: Usar con precaución y bajo vuestra propia responsabilidad.

Por razones obvias, no voy a poner fotos ni cosas.

Procedimiento

Pues resulta que investigando un poquito, he encontrado esto https://github.com/KrutavShah/vGPU_LicenseBypass lo que me permite meter la nVidia Grid en modo prueba eterno, o casi.

Basta con ejecutar esto con permisos de administrador:

<#
.SYNOPSIS
    Set vGPU VM instance into eternal trial.
.DESCRIPTION
    Configures a Windows vGPU client for a 24-hour trial period and automatic daily driver restarts.
.EXAMPLE
    Set-vGPUEternalTrial -RestartTime 2AM
.EXAMPLE
    Set-vGPUEternalTrial -RestartTime 3AM -Filter '*GRID*'
.INPUTS
    None.
.OUTPUTS
    None
.NOTES
    None
.FUNCTIONALITY
    Adds two registry keys and a scheduled task.
#>

[CmdletBinding()]
[OutputType([String])]
Param (
    # Restart time
    [Parameter(Mandatory = $false,
        HelpMessage = 'Time of day to auto-restart the driver, defaults to 3:00am local')]
    [Alias('Time')]
    [ValidateNotNullOrEmpty()]
    [string]
    $RestartTime = '3AM',

    # Device friendly name filter.
    [Parameter(Mandatory = $false,
        HelpMessage = "Filter for FriendlyName of devices to restart, defaults to 'nVidia*'")]
    [ValidateNotNullOrEmpty()]
    [String]
    $Filter = 'nVidia*'
)

process {
    $RegistryPath = 'HKLM:\SOFTWARE\NVIDIA Corporation\Global\GridLicensing'
    $RegistryProps = @(
        @{
            Name         = 'UnlicensedUnrestrictedStateTimeout'
            PropertyType = 'DWORD'
            Value        = 0x5a0
        }
        @{
            Name         = 'UnlicensedRestricted1StateTimeout'
            PropertyType = 'DWORD'
            Value        = 0x5a0
        }
        @{
            Name         = 'UnlicensedRestricted2StateTimeout'
            PropertyType = 'DWORD'
            Value        = 0x5a0
        }
        @{
            Name         = 'DisableExpirationPopups'
            PropertyType = 'DWORD'
            Value        = 0x1
        }
        @{
            Name         = 'DisableSpecificPopups'
            PropertyType = 'DWORD'
            Value        = 0x1
        }
    )

    $taskName = 'Restart vGPU Driver'
    $taskDescr = 'Restart nVidia vGPU device drivers daily at {0}' -f $RestartTime
    $taskScript = ( '& { Get-PnpDevice -PresentOnly -Class Display -FriendlyName ' + ('"{0}"' -f $Filter) + ' | Foreach-Object -Process { Disable-PnpDevice -InstanceId $_.InstanceId -Confirm:$false; Start-Sleep -Seconds 7; Enable-PnpDevice -InstanceId $_.InstanceId -Confirm:$false} }')

    try {
        Write-Output -InputObject ('Setting unlicensed state timeout registry properties to 24 hours')
        # Make sure the registry key exists
            (New-Item -ItemType Directory -Path $RegistryPath -Force -ErrorAction SilentlyContinue | Out-Null)
        # Add/overwrite the properties
        foreach ($RegistryProp in $RegistryProps) { New-ItemProperty -Path $RegistryPath @RegistryProp -Force -InformationAction SilentlyContinue }

        # check for existing task and remove if present
        Write-Output -InputObject ('Checking for existing scheduled task and removing if present')
        if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) {
            Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
            Write-Output -InputObject ('Found and unregistered existing scheduled task')
        }

        # Create daily restart scheduled task
        Write-Output -InputObject ('Adding new scheduled task "{0}", daily at {1}' -f $taskName, $RestartTime)
        $taskPrincipal = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType 'ServiceAccount' -RunLevel 'Highest' -ProcessTokenSidType 'Default'
        $taskSettings = New-ScheduledTaskSettingsSet # don't need any specifics here
        $taskTrigger = New-ScheduledTaskTrigger -Daily -At $RestartTime
        $taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ('-WindowStyle Hidden -NonInteractive -NoProfile -Command "{0}" ' -f $taskScript)
        $task = Register-ScheduledTask -TaskName $taskName -Action $taskAction -Trigger $taskTrigger -Description $taskDescr -Principal $taskPrincipal -Settings $taskSettings
        Write-Output -InputObject ('Registered scheduled task "{0}"' -f $task.TaskName)
    } catch {
        throw $PSItem
    } finally {
        Write-Output -InputObject ('Done.')
    }
}

Y funcionando. No pienso actualizar.


YoVirtualizador en formato podcast. Ahora también en Sospechosos Habituales: https://feedpress.me/sospechososhabituales
Y sin más, os dejo los enlaces:

Web: https://www.yovirtualizador.com
Grupo de telegram: https://t.me/grupovirtualizador
Podcast: https://www.ivoox.com/podcast-yovirtualizador_fg_f1563806_filtro_1.xml y YouTube https://www.youtube.com/playlist?list=PLrnymu_aoVL6nk1-FcZ220P65tyHV6djV Canal de YouTube: https://www.youtube.com/channel/UC0R70cABSsmC6TFyXth0qPg

Enlaces afiliados:

Amazon: https://amzn.to/3gX3HmK
Asociación Podcast: https://www.asociacionpodcast.es/registrarse/socio/?coupon=SB6A70
iVoox Plus: https://www.ivoox.vip/plus?affiliate-code=323d07d8569f044513746a1be4724b40
iVoox Premium: https://www.ivoox.vip/premium?affiliate-code=03d0efe2be3b55e4cd6df6dc3f6a6dbc
iVoox Premium anual: https://www.ivoox.vip/premium?affiliate-code=9feb8e44ecb4c97148e227100af9223b

© 2019 - 2024 YoVirtualizador

Powered by Hugo with theme Dream.

avatar

El blog de YoVirtualizadorTu podcast y blog de confianza

Acerca de YoVirtualizador

YoVirtualizador es la marca de varios proyectos

Podcast de informática profesional. Canal de Youtube sobre el blog, el podcast y de temática profesional. Blog de contenido diverso, con temática BOFH y técnica.

Gracias por la lectura.

Política de comentarios

En YoVirtualizador todos los comentarios serán bienvenidos pero moderados.

Respetos guardan respetos.

El contenido irrelevante u ofensivo será eliminado.

Galletas

Política de cookies

En YoVirtualizador no usamos cookies para nada, pero los servicios de discus y analytics recopilan datos en servidores ajenos a YoVirtualizador sin que yo pueda hacer nada.

Este aviso es sólo porque algún político tenía que justificar su existencia.

Si hace clic en un enlace de afiliado y compra un producto o servicio, es posible que ese comerciante nos pague una tarifa.