Powershellラッパースクリプトを使用して、最近ls
コマンドを壊したアプリケーションを修正しようとしています。私のラッパーは呼び出すコマンドと同じ名前でなければならないので、私はinvoke-command
を使って元のコマンドを呼び出しています。Powershellのコマンドと同じ名前のラッパー関数?
# yarn broke 'ls'
function yarn() {
$modifiedArgs = @()
foreach ($arg in $args) {
if ($arg -cmatch '^ls$') {
$arg = 'list'
}
$modifiedArgs = $modifiedArgs + $arg
}
invoke-command yarn -ArgumentList @modifiedArgs
}
しかしinvoke-command
はどのように変更されたパラメータを元のコマンドを実行することができます
Invoke-Command : Parameter set cannot be resolved using the specified named parameters
で失敗しますか?
編集:私も試しました-ArgumentList (,$modifiedArgs)
Passing array to another script with Invoke-Commandと私はまだ同じエラーが発生します。
編集:invoke-command
はリモーティングのみのように見えます。私もInvoke-Expression "& yarn $modifiedArgs"
を試しましたが、それはその機能自体を実行します。 powershell docs&
オペレータの作品パー
"プロキシ機能"を書きたいとします。これに関するいくつかの良い情報が[MicrosoftのScripting Guyコラム](https://blogs.technet.microsoft.com/heyscriptingguy/2011/03/01/proxy-functions-spice-up-your-powershell-core-cmdlets)にあります。 /)、[Microsoft TechNetのスクリプトセンターリポジトリ](https://gallery.technet.microsoft.com/scriptcenter/New-ProxyCommand-a-simple-9735745e)、[目的のPowerShell(Windows ITPro)](http: //windowsitpro.com/blog/powershell-proxy-functions#)。さらに詳しい情報が必要な場合は、[このGoogle検索](https://www.google.com/search?q=Proxy+command+powershell)が便利です。 –
ありがとう@JeffZeitlinしかし、これはバイナリコマンドです:私は他のpowershellをラップしていません。たとえそれがあったとしても、Scripting Guyの列ごとに元の関数のコードを抽出することは、ここではクルミを割るためにスレッジハンマーを使用するように思えます。 – mikemaccana