$ErrorActionPreference = "Stop" $Base = "https://i.oikosbook.com" $Temp = Join-Path $env:TEMP "OikosBookSetup" New-Item -ItemType Directory -Force -Path $Temp | Out-Null function Pause-Setup { Write-Host "" Read-Host "Presione ENTER para continuar" } function Install-OikosBook { Write-Host "" Write-Host "[OikosBook] Descargando..." -ForegroundColor Cyan $file = Join-Path $Temp "oikosbook-setup.exe" Invoke-WebRequest "$Base/oikosbook-setup.exe" -OutFile $file -UseBasicParsing Write-Host "[OikosBook] Iniciando instalador..." -ForegroundColor Green Start-Process $file -Verb RunAs -Wait } function Install-Chrome { Write-Host "" Write-Host "[Chrome] Verificando Winget..." -ForegroundColor Cyan if (-not (Get-Command winget -ErrorAction SilentlyContinue)) { Write-Host "Winget no esta disponible en este equipo." -ForegroundColor Red Write-Host "Instale o actualice App Installer desde Microsoft Store." -ForegroundColor Yellow return } Write-Host "[Chrome] Instalando / actualizando..." -ForegroundColor Cyan winget install --id Google.Chrome -e ` --accept-package-agreements ` --accept-source-agreements ` --silent } function Run-EsetScanner { Write-Host "" Write-Host "[ESET] Descargando Online Scanner..." -ForegroundColor Cyan $file = Join-Path $Temp "eset.exe" Invoke-WebRequest "$Base/eset.exe" -OutFile $file -UseBasicParsing Write-Host "[ESET] Abriendo Online Scanner..." -ForegroundColor Green Write-Host "Complete manualmente los terminos y el analisis dentro de ESET." -ForegroundColor Yellow Start-Process $file -Verb RunAs } function Install-AnyDesk { Write-Host "" Write-Host "[AnyDesk] Descargando version oficial..." -ForegroundColor Cyan $file = Join-Path $Temp "AnyDesk.exe" Invoke-WebRequest "https://download.anydesk.com/AnyDesk.exe" -OutFile $file -UseBasicParsing Write-Host "[AnyDesk] Instalando..." -ForegroundColor Cyan $args = '--install "C:\Program Files (x86)\AnyDesk" --start-with-win --create-shortcuts --create-desktop-icon' Start-Process -FilePath $file -ArgumentList $args -Verb RunAs -Wait Write-Host "[AnyDesk] Instalado." -ForegroundColor Green } function Open-WinUtil { Write-Host "" Write-Host "[Chris Titus WinUtil] Abriendo utilidad oficial..." -ForegroundColor Cyan Write-Host "WinUtil se abrira en una nueva ventana con permisos de administrador." -ForegroundColor Yellow Write-Host "Los cambios dentro de WinUtil los decide usted manualmente." -ForegroundColor Yellow $cmd = 'irm https://christitus.com/win | iex' Start-Process powershell.exe -Verb RunAs -ArgumentList "-NoProfile", "-Command", $cmd } function Get-WindowsActivationStatus { Write-Host "" Write-Host "================ WINDOWS ================" -ForegroundColor Cyan try { $products = Get-CimInstance SoftwareLicensingProduct | Where-Object { $_.Name -like "Windows*" -and $_.PartialProductKey } if (-not $products) { Write-Host "No se pudo identificar una licencia de Windows." -ForegroundColor Yellow return } foreach ($p in $products) { $status = switch ($p.LicenseStatus) { 0 { "Sin licencia" } 1 { "ACTIVADO" } 2 { "Periodo de gracia inicial" } 3 { "Periodo de gracia adicional" } 4 { "Periodo de gracia no genuino" } 5 { "Notificacion" } 6 { "Periodo extendido" } default { "Estado desconocido ($($p.LicenseStatus))" } } Write-Host "Producto : $($p.Name)" Write-Host "Estado : $status" -ForegroundColor $(if ($p.LicenseStatus -eq 1) { "Green" } else { "Yellow" }) Write-Host "Clave : *****-$($p.PartialProductKey)" Write-Host "" } Write-Host "Comprobacion adicional de expiracion:" -ForegroundColor DarkGray cscript.exe //Nologo "$env:SystemRoot\System32\slmgr.vbs" /xpr } catch { Write-Host "No se pudo consultar la activacion de Windows: $($_.Exception.Message)" -ForegroundColor Red } } function Get-OfficeActivationStatus { Write-Host "" Write-Host "================ OFFICE =================" -ForegroundColor Cyan $possiblePaths = @( "$env:ProgramFiles\Microsoft Office\Office16\OSPP.VBS", "${env:ProgramFiles(x86)}\Microsoft Office\Office16\OSPP.VBS", "$env:ProgramFiles\Microsoft Office\root\Office16\OSPP.VBS", "${env:ProgramFiles(x86)}\Microsoft Office\root\Office16\OSPP.VBS" ) | Where-Object { $_ -and (Test-Path $_) } $ospp = $possiblePaths | Select-Object -First 1 if ($ospp) { Write-Host "Instalacion de Office detectada." -ForegroundColor Green Write-Host "Consultando licencia..." -ForegroundColor DarkGray Write-Host "" try { $result = cscript.exe //Nologo $ospp /dstatus 2>&1 $result | ForEach-Object { Write-Host $_ } $joined = ($result -join "`n") if ($joined -match "LICENSE STATUS:\s+---LICENSED---") { Write-Host "" Write-Host "Office: ACTIVADO" -ForegroundColor Green } elseif ($joined -match "LICENSE STATUS:") { Write-Host "" Write-Host "Office: revise el estado mostrado arriba." -ForegroundColor Yellow } } catch { Write-Host "No se pudo consultar OSPP: $($_.Exception.Message)" -ForegroundColor Red } } else { Write-Host "No se encontro OSPP.VBS." -ForegroundColor Yellow Write-Host "Esto puede significar que Office no esta instalado o que usa una edicion/metodo de licencia distinto." -ForegroundColor DarkGray $ctr = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -ErrorAction SilentlyContinue if ($ctr) { Write-Host "" Write-Host "Microsoft Office Click-to-Run detectado:" -ForegroundColor Green Write-Host "Producto : $($ctr.ProductReleaseIds)" Write-Host "Version : $($ctr.VersionToReport)" Write-Host "Canal : $($ctr.UpdateChannel)" Write-Host "" Write-Host "No pude confirmar automaticamente el estado de activacion de esta instalacion." -ForegroundColor Yellow } } } function Show-ActivationStatus { Clear-Host Write-Host "==================================================" -ForegroundColor DarkCyan Write-Host " DIAGNOSTICO DE LICENCIAS DEL EQUIPO" -ForegroundColor Cyan Write-Host "==================================================" -ForegroundColor DarkCyan Get-WindowsActivationStatus Get-OfficeActivationStatus } function Open-WindowsActivation { Write-Host "" Write-Host "Abriendo Activacion de Windows..." -ForegroundColor Cyan Start-Process "ms-settings:activation" } function Install-All { Install-OikosBook Install-Chrome Install-AnyDesk Write-Host "" Write-Host "La instalacion principal termino." -ForegroundColor Green Write-Host "Ahora se abrira ESET Online Scanner para realizar el analisis manual." -ForegroundColor Yellow Run-EsetScanner } do { Clear-Host Write-Host "==================================================" -ForegroundColor DarkCyan Write-Host " PREPARACION DE EQUIPO OIKOSBOOK" -ForegroundColor Cyan Write-Host "==================================================" -ForegroundColor DarkCyan Write-Host "" Write-Host "1. Instalar OikosBook Desktop" Write-Host "2. Instalar / actualizar Google Chrome" Write-Host "3. Ejecutar ESET Online Scanner" Write-Host "4. Instalar AnyDesk" Write-Host "5. Abrir Chris Titus WinUtil" Write-Host "6. Ver activacion de Windows y Office" Write-Host "7. Abrir Activacion de Windows" Write-Host "8. Preparar equipo completo" Write-Host "0. Salir" Write-Host "" $opcion = Read-Host "Seleccione una opcion" try { switch ($opcion) { "1" { Install-OikosBook; Pause-Setup } "2" { Install-Chrome; Pause-Setup } "3" { Run-EsetScanner; Pause-Setup } "4" { Install-AnyDesk; Pause-Setup } "5" { Open-WinUtil; Pause-Setup } "6" { Show-ActivationStatus; Pause-Setup } "7" { Open-WindowsActivation; Pause-Setup } "8" { Install-All; Pause-Setup } "0" { break } default { Write-Host "Opcion no valida." -ForegroundColor Yellow Start-Sleep -Seconds 1 } } } catch { Write-Host "" Write-Host "ERROR: $($_.Exception.Message)" -ForegroundColor Red Pause-Setup } } while ($opcion -ne "0") Write-Host "" Write-Host "Proceso finalizado." -ForegroundColor Green