私が持っているものの簡略化されたバージョンは、3 つの powershell スクリプトです。資格情報を使用して他の PowerShell スクリプトを呼び出します。2 番目は、3 番目のスクリプトに格納されている関数を呼び出します。したがって、基本的に、最初のスクリプトのメイン関数は次のようになります。
Invoke-Command -ScriptBlock { param($script,$param) &$script $param} -ArgumentList $scriptToRun,$param) -ComputerName $computerName -Credential $cred
この関数は、次のように渡されたパラメーターを受け取る 2 番目のスクリプトを正常に呼び出します。
param($path) . ./functions.ps1 addToiTunes $path
3 番目のスクリプトには addToiTunes という関数が含まれています。この基本関数は、次のように iTunes 用の COM オブジェクトを作成することから始まります。
function addToiTunes($path) {
$iTunes = New-Object -ComObject iTunes.application
Write-Host "Completed"
}
問題は、Write-Host ステートメントに到達しないことです。New-Object ステートメントでそこでハングアップし、最終的に停止して「スクリプトの実行が完了しました」と表示されます。
なぜこれが発生するのでしょうか?バックグラウンド プロセスで新しい com オブジェクトを作成しようとしているからでしょうか。または、資格情報の呼び出しが実際に機能していない可能性がありますか?
New-Object を呼び出すより良い方法を知っている人はいますか? または、そのアプリケーションの既存のオブジェクトを確認する必要がありますか? 何が問題なのかよくわかりません。