私は、会社が使用している外部ソフトウェア プログラムとやり取りするための powershell スクリプトを作成しています。
スクリプトは、入力パラメーターの値を取得して何かを行う必要があります。
しかし問題は、この外部ソフトウェアが多くの入力パラメーターを名前付きでプッシュすることです。
- 送信者メール
- 送信者 IP
- 送信者ポート
- エンドポイント ユーザー名
- エンドポイント マシン名
sender-ipの値だけが必要です。しかし、私の問題は
- 外部プログラムがスクリプトにパラメーターを入力する順序がわかりません
- Powershell の命名規則ではハイフンを使用できないため、sender-ipを使い始めてもエラーが発生するわけではありません 「sender-ip」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能ファイルの名前として認識されませんプログラム。
これまでの私のスクリプトは次のとおりです
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を使用することを強く好みます。
ありがとうございました!