1

質問

$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
4

1 に答える 1