我正在编写 powershell 脚本来与我们公司正在使用的外部软件程序进行交互
脚本需要获取输入参数的值并执行某些操作。
但问题是,这个外部软件用名字推送了很多输入参数
- 发件人电子邮件
- 发件人IP
- 发件人端口
- 端点用户名
- 端点机器名称
我只需要sender-ip的值。但我的问题是
- 我不知道外部程序将参数输入到脚本中的顺序
- Powershell 命名约定不允许使用连字符,因此我无法直接开始使用sender-ip而不会出现错误术语“sender-ip”未被识别为 cmdlet、函数、脚本文件或可操作文件的名称程序。
到目前为止,这是我的脚本
param([string]$Sender_IP=$(**sender-ip**))
$eventList = @()
Get-EventLog "Security" -computername $Sender_IP `
| Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} `
| Select-Object -First 2 `
| foreach-Object {
$row = "" | Select UserName, LoginTime
$row.UserName = $_.ReplacementStrings[5]
$row.LoginTime = $_.TimeGenerated
$eventList += $row
}
$UserId = $eventList[0].UserName
$UserID
看,当我手动调用foo.psl *ip_address*,
一切正常时。但是如果我在没有参数的情况下调用程序,就会出错。
如何编写代码如
if name of input variable is **sender-ip**
do something
else if name of input variable is something different
ignore
我不是在评估输入参数的值,我想捕获名为 sender-ip 的输入参数,然后从那里运行脚本并进行评估。
我希望我能很好地解释我的问题。
过去,人们使用 Python 脚本与这个第三方程序交互,您可以在其中简单地编写以下代码
attributeMap = parseInput(args)
dateSent = attributeMap["sender-ip"]
我非常喜欢使用 powershell。
谢谢!