函数中的空参数不为 Null

2024-02-23

鉴于这个基本功能:

Function TestFunction {
    Param ( [int]$Par1, [string]$Par2, [string]$Par3 )
    If ($Par1 -ne $Null) { Write-Output "Par1 = $Par1" }
    If ($Par2 -ne $Null -or $Par2 -ne '') { Write-Output "Par2 = $Par2" }
    If ($Par3 -ne $Null) { Write-Output "Par3 = $Par3" }
}
TestFunction -Par1 1 -Par3 'par3'

...输出是:

Par1 = 1
Par2 = 
Par3 = par3

即使我没有传递任何东西到$Par2变量,它仍然不为 Null 或空。发生了什么,如何重写该语句,以便第二个 If 语句计算结果为 False 并且脚本块不会被执行?

(我添加了-or $Par2 -ne ''只是为了测试,无论有没有它,它的行为都是一样的。)


你的程序有逻辑错误:$Par2 will always不等于$null or不等于''.

要修复逻辑,您应该使用-and代替-or here:

If ($Par2 -ne $Null -and $Par2 -ne '') { Write-Output "Par2 = $Par2" }

但是,因为您投射了$Par2函数参数列表中字符串的参数:

Param ( [int]$Par1, [string]$Par2, [string]$Par3 )
                    ^^^^^^^^

支票$Par2 -ne $Null是不必要的,因为$Par2将始终是字符串类型(如果您不给它赋值,它将被分配给'')。所以,你实际上应该写:

If ($Par2 -ne '') { Write-Output "Par2 = $Par2" }

或者,因为''评估为 false,你可能会这样做:

If ($Par2) { Write-Output "Par2 = $Par2" }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数中的空参数不为 Null 的相关文章

随机推荐

  • 测试抽象类具体方法

    我将如何设计和组织抽象类的具体方法的测试 特别是在 NET 中 您必须创建一个子类来实现抽象方法 带有空方法 但不实现任何具体方法 该子类应该仅用于测试 它不应该进入您的生产代码 只需忽略单元测试中被重写的抽象方法并专注于具体方法即可
  • 在 jenkins 插件中正确设置 sonar.sources

    我正在尝试建立一个安卓java项目分支 feature Fprototype app 我收到此错误 INFO 13 38 36 470 Base dir Users Shared Jenkins Home jobs Textify work
  • 打开信息活动而不关闭主活动

    我正在制作一个简单的 Android 应用程序 有两个活动 一个 MainActivity 和一个 InfoActivity 我的 ActionBar 上有一个按钮 单击后我想打开我的 InfoActivity 在我的 InfoActivi
  • Eclipse 热代码替换失败 - 重新发布 Web 应用程序

    我在 Tomcat 上的 Web 应用程序中使用热插拔 Java 调试功能 在进行一些类签名更改后 我收到 热代码替换失败 Eclipse 对话框 我明白这一点 在这种情况下 我想要的是重新发布应用程序 我可以做到 并使用新部署的代码 然而
  • 后台核心数据更新

    我基本上需要在后台线程中更新核心数据而不阻塞 UI 并保存它 保存后应重新加载表视图以查看更改 所以为了做到这一点我想使用 dispatch async dispatch get global queue DISPATCH QUEUE PR
  • android 模拟器 2.2 中的相机问题

    我遇到一个问题 在 android 2 2 模拟器中 相机无法工作 它会自动关闭相机 但这个问题在android 1 5模拟器中不会发生 为什么会发生这种情况 任何机构都可以帮忙吗 这是一个已知问题 并且已被多次询问 这里有一些可能的解决方
  • 为什么 AMD GCN 使用非零 NULL?

    这次提交 https reviews llvm org rL289252 says In amdgcn https en wikipedia org wiki Graphics Core Next目标 全局 常量和通用地址空间中的空指针取值
  • 如何将打印输出分配给变量?

    如何分配输出print函数 或任何函数 到变量 举个例子 import eyeD3 tag eyeD3 Tag tag link some file mp3 print tag getArtist 我如何分配输出print tag getA
  • 如何从文件中获取数字并将其放入数组中? [复制]

    这个问题在这里已经有答案了 所以我的程序应该生成 30 个随机数 将它们放入文件中 然后将这些数字保存在数组中 但是当我尝试打印文件中的数字时 它们不是文件中的数字 而是一些随机的大数字 include
  • 跨页面存储信用卡信息的安全方法 ASP.NET MVC

    我正在运行 ASP NET MVC 需要一种安全的方式来临时存储信用卡数据 我有一个订单确认页面 该页面会发布到实际处理订单的操作 我尝试了 TempData 但它无法在帖子中幸存下来 由于会话存储在服务器上 我可以安全地使用它吗 Than
  • 使用 PHP unlink() 方法后获取 0KB 文件

    我正在尝试删除服务器上的文件 下面是我使用的代码 function ServerDel file file realpath file echo file fh fopen file w or die can t open file fcl
  • android: 库模块中的 fcm

    我在将 Firebase Cloud Messaging 集成到库模块中时面临一个奇怪的问题 我正在开发一个图书馆项目 在该项目中我需要处理来自图书馆本身的 FCM 服务器的通知 我不知道这是否可能 我遵循的步骤 我在 Firebase 控
  • Angular 的多种布局

    我正在构建一个 Angular 应用程序 但在如何处理主页方面遇到了一些障碍 主页有 90 的不同 只有标题保持不变 在那里我有显示用户登录状态的指令 为了利用路由 模板等 我理想地希望将我的 ngview 显示在示例的白色区域中 一切正常
  • 使用 git 管理 virtualenv 状态:这会导致问题吗?

    我目前已经以一种完全正确的方式设置了 git 和 virtualenv 满足我的需求 到目前为止 还没有造成任何问题 不过我知道 我的设置是非标准的 我想知道是否有人更熟悉 virtualenv 内部结构可以指出是否以及哪里可能出错 My
  • 从浏览器中删除历史点

    我们可以删除在网络浏览器中创建的历史记录点吗 或者当示例链接 某些链接 时是否可以不添加历史点 被点击并且浏览器中的 url 发生变化 您无法从浏览器历史记录中删除项目 但可以将新文档加载到窗口中并bypassjavascript 的历史
  • HNS 失败并出现错误:参数不正确

    我正在使用 Visual Studio 2017 制作一个 Docker 容器化应用程序 当首先通过 Visual Studio 运行 docker 时 出现错误 ERROR client version 1 22 is too old 通
  • 由于组合框未突出显示,如何“获取”WPF 组合框 PART_EditableTextbox?

    每次单击按钮时 我的 WPF 组合框都会填充一组不同的字符串 窗口上还有其他控件 组合框是窗口中的 第一个 顶部 但文本不会突出显示 当用户通过控件切换时 文本会突出显示 但当它是窗口上的第一个时 文本不会突出显示 也许我需要在组合框本身
  • Python:使用自定义分隔符格式化字符串[重复]

    这个问题在这里已经有答案了 EDITED 我必须使用字典中的值格式化字符串 但该字符串已经包含大括号 例如 raw string DATABASE name DB NAME 但是当然 raw string format my diction
  • 在 Active Directory 中,什么是资源?

    在 AAD node js 库的示例和测试中 00000002 0000 0000 c000 000000000000始终作为资源传递 什么是00000002 0000 0000 c000 000000000000 The 文档 https
  • 函数中的空参数不为 Null

    鉴于这个基本功能 Function TestFunction Param int Par1 string Par2 string Par3 If Par1 ne Null Write Output Par1 Par1 If Par2 ne