脚本函数或过滤器

时间:2016-06-01 06:41:54

标签: powershell

我遇到了一个小问题,我使用PowerShell生成了Runbook。 其中一个使用类似于此

的构建连接到Vmware

代码

TempFunction{
connects to vmware using VMuser1 credentials
runs code etc...
All is well
return $TempVariable
}
$TempVariable = Invoke-Command -ScriptBlock ${function:TempFunction} -ComputerName localhost

一切正常。

问题在于,当我引入一个名为InfoArray的全局数组,它在路上存储信息,并希望使用其他凭据将其写入不同的服务器时,它无法声明“Invoke-Command:不支持Using变量”在脚本函数或过滤器“

以下是我介绍的代码:

#Append gathered log information to log
    $strScriptUser = "domain\FileUser"
    $strPass = "Password01"
    $PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
    $cred = new-object system.management.automation.PSCredential $strScriptUser, $PSS
    Start-Job -ScriptBlock { Add-Content $using:Logfile $using:InfoArray } -Credential $cred
return $TempVariable
}

关于如何解决这个问题的任何想法? 以下不起作用

Start-Job -ScriptBlock { Add-Content $Logfile $InfoArray } -Credential $cred

此致 AKR

2 个答案:

答案 0 :(得分:1)

将它们作为参数传递给此脚本块,因为它不支持使用。

样品

Start-Job -ScriptBlock {
    param($logfile,$infoArray) 
    Add-Content $Logfile $InfoArray 
} -Credential $cred -ArgumentList @($logfile,$infoArray)

答案 1 :(得分:0)

我试图在不使用-computername localhost的情况下调用,这导致它通过PS脚本工作。

挑战在于我无法直接在系统中心协调器中将PowerCLi pssnapin作为64位加载,并且必须调用才能使其正常工作。

最后,似乎工作的是使用服务器名称而不是localhost运行该函数。

$TempVariable = Invoke-Command -ScriptBlock ${function:TempFunction} -computerName *ServerName*