【问题标题】:Powershell ISE not detecting specific parameter valuePowershell ISE 未检测到特定参数值
【发布时间】:2020-09-11 23:31:13
【问题描述】:

我开发了一个 powershell 脚本,我在其中创建了接受 3 个输入参数的函数。

奇怪的是,如果我将 5029D 作为第二个参数传递,它的颜色不会变为浅紫色,这是其他参数的颜色。

但如果我提供其他任何东西,对于前 5029A,它的颜色会按预期变为浅紫色。

由于上述问题,我的功能逻辑仅在 5029D 上无法正常工作。对于其他参数,它工作正常。

到目前为止我尝试过的所有事情:

  1. Ran Remove-Variable * -ErrorAction SilentlyContinue 并重新启动 IMS 会话。
  2. 多次重新启动 IMS 会话

环境细节:

Powershell 版本:5.1.14409.1018
Windows 版本:Windows Server 2012 R2 标准版

请帮忙,因为我被卡住了,我完全一无所知。

【问题讨论】:

  • 您是否尝试在它们周围添加引号? `dbsi -dbhost "servername" -dbprefix "5029A" -custname "abcd"
  • d 是一个数字文字。它与数字一起使用时具有特殊功能

标签: powershell


【解决方案1】:

dD 后缀为十进制数时,会被解析为numeric literal。如果您的意图是将值作为字符串传递,则只需引用它或硬输入您的 dbprefix 参数:

选项 1 - 使用引号:

dbsi -dbhost servername -dbprefix "5029D" -custname abcd

选项 2 - 设置参数类型:

function dbsi {
    param($dbhost,[string]$dbprefix,$custname)
    $dbprefix
}
dbsi -dbhost servername -dbprefix 5029D -custname abcd

本质上,当应用D 时,5029D 将转换为作为十进制数据类型的5029。如果没有d5029 将默认输入为整数。见下文:

(5029).GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType

(5029D).GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Decimal                                  System.ValueType

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2021-04-11
    • 2016-11-29
    相关资源
    最近更新 更多