gpt4 book ai didi

powershell - 空参数的Powershell错误处理

转载 作者:行者123 更新时间:2023-12-03 08:22:49 24 4
gpt4 key购买 nike

这是我从excel电子表格中调用的一个小脚本:

Param (
[Int] $ID,
[String] $server,
[String] $db,
[String] $uid,
[String] $pw,
[String] $Navn,
[String] $Path
)
Try
{
Add-Type -Path $Path

foreach($i in [BrReader2.BrReader]::Main($ID, $uid, $pw, $db, $server)){if($i.Key -eq $Navn){$Data = $i}}

[BrReader2.BrReader]::WriteToTemporaryTable($Data, $ID, $uid, $pw, $db, $server)
}
Catch
{
$ErrorMessage = $_.Exception.Message
Write-Host $ErrorMessage
Read-Host -Prompt "Press Enter to exit"
}

除一件小事外,它的效果通常都很好。如果由于某种原因以错误的方式输入了其中一个参数(例如,如果参数完全为空),则它将在那里失败并且不会写出错误消息。控制台窗口将快速出现并再次消失,用户可能不会意识到自己做错了什么。

给出错误的路径是可以的,它仍然会进入try/catch块并将适当的错误消息写入控制台。提供NO路径不会使控制台窗口保持打开状态,因此用户可以查看出了什么问题。

我需要将“Param(...)”部分放在脚本的顶部,所以我不能将其放在try/catch块中。有什么办法可以写出错误消息并保留控制台如果其中一个参数失败,则窗口打开?

我对Powershell的经验不是很丰富,因此可能缺少一些明显的东西。

最佳答案

如果要设置参数,可以将其设为必需参数。

如果它们应包含某个值,则也可以对其进行验证。

例如:

Param (
[Parameter(Mandatory = $true)]
[ValidateRange(10,99)]
[Int] $ID,

[Parameter(Mandatory = $true)]
[String] $server,

[Parameter(Mandatory = $true)]
[ValidateSet("sql01.contoso.local","sql02.contoso.local")]
[String] $db,

[Parameter(Mandatory = $true)]
[String] $uid,

[Parameter(Mandatory = $true)]
[String] $pw,

[Parameter(Mandatory = $true)]
[String] $Navn,

[Parameter(Mandatory = $true)]
[ValidateScript({Test-Path $_ -PathType 'Container'})]
[String] $Path
)

关于powershell - 空参数的Powershell错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com