0

特定のユーザーが呼び出すことができるpowershellスクリプトがあります。スクリプトは昇格されたアクセス許可で実行されるため、意図した動作を回避するためにスクリプトを使用できないようにする必要があります。スクリプトのパラメーターの 1 つは、別のコマンドレットの引数として機能する文字列です。

したがって、ユーザーは「-Day 4 -Year 1989 -Month 3」という文字列を指定できます。

私のスクリプトでは、次のように実行します: Get-Date -Day 4 -Year 1989 -Month 3

これで、Invoke-Expression を介してこれを実行できることがわかりましたが、それでは、powershell インジェクションに対して脆弱なままになります (つまり、ユーザーは '-day 4; do-bad-stuff' でパスする可能性があります)。

別の方法として、Get-Date のラッパーを作成することもできますが、実際に呼び出しているコマンドレット (Get-Date ではない) にはさまざまなパラメーターがあり、ラップするのに多くの作業が必要なように見えるため、これは大変な作業のように思えます。モール。そのコマンドレットでは、害を及ぼす可能性のある引数を呼び出すことができません (Get-xxx コマンドレットであるため)。

文字列を引数として特定のコマンドレットを呼び出す方法を知っている人はいますか?

4

1 に答える 1