Powershell 入门之 可选参数和必选参数

前面我们给我们的脚本添加了参数,今天我们来看看,怎么定义这些参数,使其称为必选参数或可选参数。

我们知道,test-netconnection 命令,不仅可以通过 ping 的方式测试网络,它还可以用于测试端口。下面我们将脚本做一些更改,添加一个端口,作为可选参数,将计算机名作为必选参数:

function test-net_port {
    [cmdletbinding()]
    param(      # computerName 为必选参数,而 port 为可选参数
        [parameter(mandatory=$true)]
        [string[]]$computerName,
        [parameter(mandatory=$false)]
        [int] $port
    )
    foreach ($computer in $computerName) {
        Write-Verbose "Now testing $computer."
        if ($port -eq "")     # 由于 port 是可选参数,在这里我们要加一个逻辑判断,决定使用哪个命令
        {
            $ping = Test-NetConnection -ComputerName $computer -InformationLevel Quiet -WarningAction SilentlyContinue
        } else {
            $ping = Test-NetConnection -ComputerName $computer -InformationLevel Quiet -WarningAction SilentlyContinue -Port $port
        }
        if ($ping){
            Write-Output $ping
        } else {
            Write-Verbose "Ping failed on $computer. Check the network connection."
            Write-Output $ping
        }
    }
}

运行结果:

PS C:\Users\v-peizhiyu> test-net_port -computerName www.bing.com
True

PS C:\Users\v-peizhiyu> test-net_port -computerName www.bing.com -port 443
True

PS C:\Users\v-peizhiyu> test-net_port -computerName www.bing.com -port 34
False

<<:  Day 11 : 案例分享(3.4) 会计模组-分析会计与资产折旧

>>:  【Day12】:NVIC中断概要

DAY 24 Big Data 5Vs – Veracity(准确性) Athena(1)

第四个要讨论的V是准确性Veracity,在资料处理的过程中,资料会从原本的原始资料raw data...

【Day.29】React进阶 - 以Redux Thunk处理非同步资料流

很多时候,我们的state必须要透过HTTP Request从後端取得。然而发送Request常用的...

Day 17 CSS <用户介面样式 & 三角>

什麽是介面样式? 所谓的介面样式,就是更改一些用户操作样式,以提高用户体验。 更改用户的鼠标样式 ...

[DAY 12] CNN 简介

前言 总算开始了一个跟DL比较有关系的名词啦(?)一直以来科学家总想模仿动物的大脑来做AI结构,所以...

Day03 - 连接Ptt WebSocket

PTT自2017年6月开始实验性开放WebSocket,到2020年1月1日已公告正式支援,现今以W...