Ошибка параметра диапазона проверки Powershell - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть скрипт, который автоматизирует резервное копирование Windows USMT, но у меня возникла проблема с Powershell 2.0.В основном у меня есть параметр сценария, который требует положительного целого числа, и проверка работает в Powershell 3.0+, но не в 2.0, который поставляется в Windows 7.

Код параметра:

[CmdletBinding()]
Param (
    [ValidateScript({
        if( -Not ($_ | Test-Path) ){
            throw "File or folder does not exist"
        }
        if($_ | Test-Path -PathType Leaf){
            throw "The Path argument must be a folder. file paths are not allowed."
        }
        if( -not (($_ | Get-ChildItem | Measure-Object).Count -eq 0) ) {
            throw "The Folder '$_' Has Content/Files! USMT will not run against a non-empty backup folder!!"
        }
        return $true
    })]
    [System.IO.FileInfo]$BackupPath,

    [switch]$OfflineUSBDock,

    [ValidateRange(1, [int]::MaxValue)][int]$UEL
)

Ошибка: enter image description here

Итак, мой вопрос: как я могу исправить это для правильной работы в Powershell 2.0?Цель состоит в том, чтобы параметр $ UEL принимал только положительное целое число.

Полный сценарий

1 Ответ

0 голосов
/ 27 сентября 2018

Здесь 2 обходных пути из комментариев (спасибо @TheIncorrigible за рекомендации):

[ValidateScript({
    if ($_ -eq 0) {
        throw "UEL requires a positive integer greater then 0!"
    }
    return $true
})]    
[uint32]$UEL

или

 [ValidateRange(1, 2147483647)][int]$UEL

Не так чисто, как при использовании [int]::MaxValue, но он получает работусделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...