对PowerShell 5.1中的错误以正确的语法进行响应

时间:2019-07-15 16:10:28

标签: powershell powershell-5.0

我使用PowerShell 5.1并编写脚本供其他管理员使用。当我的函数使用了错误的语法时,我需要能够使用错误代码中的正确语法进行响应。我该怎么办?

function Get-2008Servers {
    [CmdletBinding()]
    Param(
        [string]$ReferenceDomain = ""
    )

    $ForestObj = Get-ADForest -Server $ReferenceDomain
    foreach ($Domain in $ForestObj.Domains) {
        Get-ADComputer -Filter 'OperatingSystem -like "*200*"' -Server $ReferenceDomain -Properties Name,lastlogondate,operatingsystem,OperatingSystemServicePack,canonicalname |
            select Name,lastlogondate,operatingsystem,OperatingSystemServicePack,canonicalname |
            sort name -Descending |
            Export-Csv -Force -NoTypeInformation .\output\$ReferenceDomain-NOT2016Servers.csv
    }
}
$result = ls .\output\*-NOT2016Servers.csv
$result

运行该功能时:

Get-2008Servers

当您尝试在没有必需选项的情况下运行时,需要提示您添加“ -ReferenceDomain”。如何将其写到上面的代码中?

1 个答案:

答案 0 :(得分:6)

通过添加一个[Parameter()]属性装饰器并指定Mandatory属性:

param(
    [Parameter(Mandatory = $true)]
    [string]$ReferenceDomain
)

有关Parameter属性和Mandatory的更多信息,请参见about_Functions_Advanced_Parameters help topic