リモートPowerShellセッションでプロンプトをカスタマイズしようとしています。これはすべて正常に機能します。
$session = New-PSSession MyRemoteServer
Invoke-Command -Session $session -ScriptBlock {
New-PSDrive -Name MyApp -PSProvider FileSystem -Root D:\Applications\MyApp | Out-Null
CD MyApp:\
function prompt { "test" }
}
Enter-PSSession -Session $session
セッションを作成し、便宜上PSDriveをセットアップしてから、プロンプトを「テスト」にカスタマイズします。
ただし、プロンプトに「テスト」と表示したくないので、サーバー名に色を付けるコードを実行したいと思います。ただし、さまざまな種類のサーバーに接続するための多くの同様の機能で再利用したいので、スクリプトブロック(上記)にハードコーディングしたくありません。
そのため、関数をローカルで定義し、「Get-Contentfunction:\RemotePrompt」を使用してコンテンツを取得できます。しかし、これを他のセッションに送信する方法を理解するのに苦労しています。Invoke-Expressionはセッションを取得していないようであり、Invoke-Commandは常にスクリプトブロックを予期しているようです。
私が本当にやりたいInvoke-Command -ScriptBlock { function prompt $MyRemoteCode }
のは、変数が「解決」されているようなものです。
これは可能/簡単ですか?