如何在另一个域中创建一个com对象?

时间:2014-07-23 21:07:52

标签: powershell com credentials remote-server

我尝试使用PowerShell在远程服务器的根文件夹中快速查找计划任务。我找到了其他人编写过的各种脚本,但他们要么是在本地主机上,要么是在同一域中的服务器上。我支持几十个域中的服务器,因此我需要一些方法来传递凭证。

这是我剧本的核心:

$server = "<computername>"
$schedule = new-object -com("Schedule.Service") 
$Schedule.connect($server)
$folder = $schedule.GetFolder("") 
$tasks = $folder.GetTasks("")
foreach($task in $tasks) {
if (($task = $Folder.GetTasks(0))) {
    $Tasks| ForEach-Object {[array]$results += $_}
    $Tasks | Foreach-Object {
        New-Object -TypeName PSCustomObject -Property @{
            'Name' = $_.name
            <etc.>
            <etc.>
        }
    }
}

该代码在我的本地主机或与我的工作站位于同一域中的服务器上工作正常。在其他脚本中,我使用Get-Credential创建$ creds并(以各种方式)将其传递给适当的cmdlet。但有了这个,我不确定。 &#39;新物体&#39;不接受-Credential参数。我尝试在Invoke-Command脚本块中包装各个部分,因为它接受-Credential,但它以各种方式失败。我不确定需要在Invoke-Command中包含什么 - 只是新对象? foreach循环?整个事情?

提前致谢。

1 个答案:

答案 0 :(得分:1)

进行Connect通话时,您可以传递服务器,域名,用户名和密码:

$Schedule.Connect($serverName, $user, $domain, $password);

这应该允许您在新域上使用该对象。

MSDN Reference