none
Powershell подсчет объема HDD RRS feed

  • Вопрос

  • Приветствую повершельщики. Прошу небольшой помощи. нарисовал себе скрипт для подсчета требуемого объема нового жесткого диска исходя из занятого объема старого. Так вот работает он нормально или работал до того момента как я не получил обьем в терабайтах. Если к примеру уменя ХДД обьем 1 тб, а мне надо вычесть объем некоторых папок а они в ГБ или МБ, то ничего не робит (((.

    SKRIPT:

    $srvaltFS=(Get-ADComputer-Filter*|Where-Object{($_.name -like"S*")}).name

    if(Test-Path"\\$srvaltFS1\TOOLS\NSMScan\HostNamen.txt") {

    $servinfo=Import-Csv"\\$srvaltFS1\TOOLS\NSMScan\HostNamen.txt"-Delimiter";"-Header ServerName,DokuSystem,ServerType,Options

    [array]$DMS=$servinfo|Where-Object{($_.Options -match"\+DMS")} |Select-Object-expandServerName

    [array]$EX=$servinfo|Where-Object{($_.Options -match"\+EX")} |Select-Object-expandServerName

    [array]$FS=$servinfo|Where-Object{($_.Options -match"\+FS")} |Select-Object-expandServerName

    }


    • Изменено cht3 12 июля 2019 г. 10:28
    12 июля 2019 г. 10:28

Ответы

  • 1 конвертация числовых значений в строку, а потом обратно это странная практика которая неменуемо приводит к ошибкам

    2 девять if'ов легко заменятся 1 switch'ом

    3 четыре одинаковые функции легко заменяется одной с необходимыми параметрами

    4 логика скрипта мне не понятна, поясните что вы делаете и зачем


    The opinion expressed by me is not an official position of Microsoft


    • Изменено Vector BCOModerator 12 июля 2019 г. 22:41
    • Помечено в качестве ответа cht3 17 июля 2019 г. 9:41
    12 июля 2019 г. 22:39
    Модератор

Все ответы

  • #DMS (D:\Daten1)  + 30% + 12GB

    FunctionDMS{

    if($DMS-ne$null){

    Invoke-Command$DMS{

    if(Test-PathD:\Daten1){

    $aDMS="{0:N0}"-f((Get-ChildItemD:\Daten1-Recurse|Measure-Object-PropertyLength-Sum).Sum /1GB)

    Write-host"DMS = $aDMSGB"-ForegroundColorYellow

    [int]$DMSempf=(([int]$aDMS*30)/100)+$aDMS+"12"

    if($DMSempf-like"*1"){$DMSempf+=9}

    if($DMSempf-like"*2"){$DMSempf+=8}

    if($DMSempf-like"*3"){$DMSempf+=7}

    if($DMSempf-like"*4"){$DMSempf+=6}

    if($DMSempf-like"*5"){$DMSempf+=5}

    if($DMSempf-like"*6"){$DMSempf+=4}

    if($DMSempf-like"*7"){$DMSempf+=3}

    if($DMSempf-like"*8"){$DMSempf+=2}

    if($DMSempf-like"*9"){$DMSempf+=1}

    Write-host"DMS (empfohlen) = $DMSempfGB"-ForegroundColorGreen;Write-host"---"

            }

        }

    }

    if($DMS-eq$null){Write-Host"Kein DMS"-ForegroundColorRed;$aDMS="0";Write-host"---"}

    }

    DMS

    12 июля 2019 г. 10:29
  • #EX D:\Programme\ExchangeServer +20%

    Function EX{

    if($EX-ne$null){

    Invoke-Command$EX{

    if(Test-PathD:\Programme\ExchangeServer){   

    $aEX="{0:N0}"-f((Get-ChildItemD:\Programme\ExchangeServer-Recurse|Measure-Object-PropertyLength-Sum).Sum /1GB)

    Write-host"Exchange = $aEXGB"-ForegroundColorYellow

    [int]$EXEmpf=(([int]$aEX*20)/100)+$aEX

    if($EXEmpf-like"*1"){$EXEmpf+=9}

    if($EXEmpf-like"*2"){$EXEmpf+=8}

    if($EXEmpf-like"*3"){$EXEmpf+=7}

    if($EXEmpf-like"*4"){$EXEmpf+=6}

    if($EXEmpf-like"*5"){$EXEmpf+=5}

    if($EXEmpf-like"*6"){$EXEmpf+=4}

    if($EXEmpf-like"*7"){$EXEmpf+=3}

    if($EXEmpf-like"*8"){$EXEmpf+=2}

    if($EXEmpf-like"*9"){$EXEmpf+=1}

    Write-host"Exchange (empfohlen) = $EXEmpfGB"-ForegroundColorGreen;Write-host"---"

            }

        }

    }

    if($EX-eq$null){Write-Host"Kein Exchange"-ForegroundColorRed;$aEX="0";Write-host"---"}

    }

    EX

    12 июля 2019 г. 10:29

  • #FS (D:\) - D:\Programme\ExchangeServer - D:\Daten1  + 20%

    Function FS{

    Invoke-Command$srvaltFS{

    if(Test-PathD:\){   

    $FSD=Get-WMIObjectWin32_Volume-filter"Drivetype=3"|where-object{$_.DriveLetter -eq"D:"}

    $FSDtotal='{0:N0}'-f($FSD.Capacity/1GB)

    $FSDfree='{0:N0}'-f($FSD.FreeSpace/1GB)

    $FSDused=($FSDTotal-$FSDFree-$aEX)

    Write-host"FileServer = $FSDusedGB"-ForegroundColorYellow

    [int]$FSDEmpf=(([int]$FSDused*20)/100)+$FSDused

    if($FSDEmpf-like"*1"){$FSDEmpf+=9}

    if($FSDEmpf-like"*2"){$FSDEmpf+=8}

    if($FSDEmpf-like"*3"){$FSDEmpf+=7}

    if($FSDEmpf-like"*4"){$FSDEmpf+=6}

    if($FSDEmpf-like"*5"){$FSDEmpf+=5}

    if($FSDEmpf-like"*6"){$FSDEmpf+=4}

    if($FSDEmpf-like"*7"){$FSDEmpf+=3}

    if($FSDEmpf-like"*8"){$FSDEmpf+=2}

    if($FSDEmpf-like"*9"){$FSDEmpf+=1}

    Write-host"FileServer (empfohlen) = $FSDEmpfGB"-ForegroundColorGreen;Write-host"---"

        }

    }

    }

    FS

    12 июля 2019 г. 10:29
  • все за раз не выкладывается))
    12 июля 2019 г. 10:30
  • 1 конвертация числовых значений в строку, а потом обратно это странная практика которая неменуемо приводит к ошибкам

    2 девять if'ов легко заменятся 1 switch'ом

    3 четыре одинаковые функции легко заменяется одной с необходимыми параметрами

    4 логика скрипта мне не понятна, поясните что вы делаете и зачем


    The opinion expressed by me is not an official position of Microsoft


    • Изменено Vector BCOModerator 12 июля 2019 г. 22:41
    • Помечено в качестве ответа cht3 17 июля 2019 г. 9:41
    12 июля 2019 г. 22:39
    Модератор
  • Я изменил немного алгоритм, все прекрасно работает)). Избавился от первого пункта, убрал все эти if. Немного поясню смысл! Фирма у нас предоставляет сервера клиентам, делаем миграцию на новую систему и чтоб не сильно баловать клиента и не платил он за воздух, мне надо расчитать требуемые обьемы новых дисков исходя из используемого обьема дисков имеющихся у них в системах. Всеравно спасибо 😊
    Чтоб ручками не калькулировать все это))
    • Изменено cht3 17 июля 2019 г. 9:46
    17 июля 2019 г. 9:39
  • Я изменил немного алгоритм, все прекрасно работает)). Избавился от первого пункта, убрал все эти if. Немного поясню смысл! Фирма у нас предоставляет сервера клиентам, делаем миграцию на новую систему и чтоб не сильно баловать клиента и не платил он за воздух, мне надо расчитать требуемые обьемы новых дисков исходя из используемого обьема дисков имеющихся у них в системах. Всеравно спасибо 😊
    Чтоб ручками не калькулировать все это))
    если будет требоваться помощь в подобного рода расчетах описывайте пожалуйста в коментах блоки скрипта и что они делают. К примеру наличие 9 if и их содержимое меня озадачило 

    The opinion expressed by me is not an official position of Microsoft

    17 июля 2019 г. 10:20
    Модератор
  • Ok! Приму к сведению )))
    19 июля 2019 г. 18:13