7

リモートコンテキストで実行されるスクリプトを作成するためのベストプラクティスにはどのようなものがありますか?

たとえば、 $Profileリモート実行中に組み込みのvarが存在しないことを発見しました。

4

2 に答える 2

2

プロフィール

構成されていないという1つの主な違いを発見しました$profile

ここにMSDNに埋め込まれているのは、リモートPowerShellに関するいくつかのFAQですget-help about_Remote_FAQ

「私のプロフィールはどこにありますか?」(へー)それは説明します:

たとえば、次のコマンドは、$sのセッションでローカルコンピューターからCurrentUserCurrentHostプロファイルを実行します。

    invoke-command -session $s -filepath $profile

次のコマンドは、$sのセッションでリモートコンピューターからCurrentUserCurrentHostプロファイルを実行します。$ profile変数は設定されていないため、コマンドはプロファイルへの明示的なパスを使用します。

    invoke-command -session $s {. "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

シリアル化

影響を与える可能性のあるもう1つの違いは、コマンドによって返される.NETオブジェクトが直接返されるのではなく、リモートで実行して返すと、ネットワーク上でシリアル化および逆シリアル化されることです。多くのオブジェクトはこれをうまくサポートしますが、サポートしないものもあります。Powershellは、「フックアップ」されなくなったオブジェクトのメソッドを自動的に削除します。これらは基本的にデータ構造ですが、などの一部のタイプではメソッドを再フックしますDirectoryInfo

通常、これについて心配する必要はありませんが、パイプを介して複雑なオブジェクトを返す場合は、...

于 2012-05-09T14:48:41.693 に答える
0

スクリプト ブロックは、通常のようにクロージャーとしては機能しません。

$var = 5
$sb={ $var }
&$sb # 5
Start-Job $sb | Wait-Job | Receive-Job # nothing
于 2010-04-20T21:54:38.500 に答える