質問
$MyInvocation と同じデータを取得する方法を知っている人はいますか? これを実現するために、サードパーティのアドオン ソフトウェアではなく、組み込みのもののみを使用することを強くお勧めします。
問題
-NoMachineProfile を使用してセッションを作成すると、$MyInvocation は入力されません。[System.Environment]::Username is for $env:USERNAME.
物事が呼び出される方法を変更することはできません。-NoMachineProfile はオプションとして利用できないため、解決策として削除することは提案しないでください。
$args は後処理であるため、依存したくありません。つまり、引用符、変数、およびその他の渡された引数は、渡されたときと同じではなくなりました。
バックグラウンド
$MyInvocation.line には、解析が提供されていない正確なコマンドが含まれています。
例: SomeScript.ps1
write-host ("Invoked line: "+$MyInvocation.line)
.\somescript.ps1 foo bar "foo and bar" は次の出力を生成します
Invoked line: .\somescript.ps1 foo bar "foo and bar"
引用符とすべて、それはカットアンドペーストが可能であり、まったく同じように実行でき、ユーザーの翻訳がまったくないことを意味します.
-NoMachineProfile 呼び出し
$SE_ADMIN_CREDENTIALS = Get-Credential
$PS_SESSION_OPTIONS = New-PSSessionOption -NoMachineProfile
$arrayRemoteTarget = "thehostname"
$strScriptToRun = ".\somescript.ps1"
$StrArguments = "arg1,arg2,arg3"
$icmCommand = "Invoke-Command -Credential `$SE_ADMIN_CREDENTIALS -SessionOption `$PS_SESSION_OPTIONS -ComputerName `$arrayRemoteTarget -FilePath `$strScriptToRun -ArgumentList (`$strArguments).Split("","")"
Invoke-Expression $icmCommand