【发布时间】:2013-10-17 08:17:09
【问题描述】:
我所拥有的简化版本是三个 powershell 脚本。一个使用凭据调用其他 powershell 脚本。第二个调用存储在第三个脚本中的函数。所以基本上我的第一个脚本的主要功能是这样的:
Invoke-Command -ScriptBlock { param($script,$param) &$script $param} -ArgumentList $scriptToRun,$param) -ComputerName $computerName -Credential $cred
此函数成功调用第二个脚本,该脚本接受传入的参数,如下所示:
param($path) . ./functions.ps1 addToiTunes $path
第三个脚本包含一个名为 addToiTunes 的函数,它的基本函数首先是为 iTunes 创建一个 COM 对象,如下所示:
function addToiTunes($path) {
$iTunes = New-Object -ComObject iTunes.application
Write-Host "Completed"
}
问题是,它永远不会到达 Write-Host 语句。它只是挂在 New-Object 语句上,然后最终停止并声明“脚本执行完成”。
知道为什么会发生这种情况吗?是因为它试图在后台进程中创建一个新的 com 对象吗?或者可能是我的凭据调用实际上不起作用?
有人知道调用新对象的更好方法吗?还是我应该检查该应用程序的现有对象?我不太确定问题出在哪里。
【问题讨论】:
-
顺便说一句,它肯定是在调用该函数,因为如果我在 New-Object 语句之前添加一个 Write-Host 语句,它将打印它。
-
我的另一个问题是,它是否可能与 Powershell 本身有关?
-
说“远程”powershell 脚本可能并不准确,因为它们都在同一台机器上运行。
标签: powershell