【发布时间】:2014-07-24 05:23:56
【问题描述】:
我正在尝试使用 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。但是对于这个,我不确定。 'New-Object' 不接受 -Credential 参数。我尝试将各个部分包装在 Invoke-Command 脚本块中,因为它接受 -Credential,但它以各种方式失败。我不确定 Invoke-Command 中需要包含什么——只是新对象? foreach 循环?整件事?
提前致谢。
【问题讨论】:
-
如果您可以升级到 powershell 4,它具有计划任务 cmdlet。我知道它不能回答问题,但它是一种替代方法。
标签: powershell com credentials remote-server