Jump to content

smcclos

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by smcclos

  1. I looked at this script, and it will always return "Operating system is not supported" because in the script $major and $minor are strings, I was able to confirm that with the commands:

    $major.GetType()

    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     True     String                                   System.Object

     

    $minor.GetType()

    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     True     String                                   System.Object

     

    I recommend updating the script to this, and I highlighted the changes:

    $version = (Get-WmiObject Win32_OperatingSystem).Version
    [int]$major = $version.split(".")[0]
    [int]$minor = $version.split(".")[1]
    if ($major -gt 6 -or ($major -eq 6 -and $minor -gt 1)) {
        Optimize-Volume -driveletter $pwd.drive.name -Analyze -verbos
    } Else {
        Write-Output "Operating system is not supported."
    }

     

    Here is the original script:

    $version = (Get-WmiObject Win32_OperatingSystem).Version
    $major = $version.split(".")[0]
    $minor = $version.split(".")[1]
    if ($major -gt 6 -or ($major -eq 6 -and $minor -gt 1)) {
        Optimize-Volume $pwd.drive.name -Analyze -verbos
    } Else {
        Write-Output "Operating system is not supported."
    }

     

    REF: https://learn.microsoft.com/en-us/powershell/module/storage/optimize-volume?view=windowsserver2022-ps

    REF: https://lazyadmin.nl/powershell/if-else-statements/

    REF: https://theitbros.com/powershell-convert-string-to-int/

×
×
  • Create New...