朋友的我遇到了这个函数的麻烦,它将在远程服务器上运行,但是我有以下输出:
Invoke-Command :无法找到接受参数'& C:\testNunit\dll\‘的位置参数。At D:\test\Multithread.ps1:65 char:16 + Invoke-Command <<<< -ComputerName $serv -ScriptBlock $command (ScriptBlock::Create("& $OneProject")) -credential $cred + CategoryInfo : InvalidArgument:(:) Invoke-Command,ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,CategoryInfo
function Nunit {
##Parse connection parameters
$Connection = @{"server" = "..."; "username" = "..."; "password" = "...."}
$serv = $connection.Get_Item("server")
$user = $connection.Get_Item("username")
$pass = $connection.Get_Item("password")
$securePassword = ConvertTo-SecureString -AsPlainText $pass -Force
#Create connection credentials object for Invoke-Command
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $user, $securePassword
$NunitExe = "C:\testNunit\bin\nunit-console.exe"
$OneProject = "C:\testNunit\dll\Foundation.Tests.dll"
$TestProjects = "C:\testNunit\dll\"
foreach( $OneProject in ( $TestProjects))
{
$WorkingDir = "c:\testNunit"
$NUnitOutput = "c:\testNunit" + $OneProject + ".xml"
$command = {&"$NunitExe" "$WorkingDir\$OneProject" \noshadow/framework:"net-3.5" /xml:$NUnitOutput}
}
Invoke-Command -ComputerName $serv -ScriptBlock $command ([ScriptBlock]::Create("& $OneProject")) -credential $cred
}发布于 2013-08-07 15:43:38
在-Scriptblock参数之后,您将指定两个脚本块--一个在$command中,一个通过创建。应该只为参数提供一个值。
发布于 2013-08-07 16:31:54
有几个问题。首先,您需要向脚本块传递一个参数,实际上您有两个参数。其次,您需要在-ArgumentList中将变量作为参数传递,否则脚本块将无法识别它们。
试试这个:
Invoke-Command -ComputerName $serv -ScriptBlock {
$command = args[0]
$OneProject = args[1]
$command & $OneProject} -ArgumentList @($command, $OneProject) -credential $cred https://stackoverflow.com/questions/18106562
复制相似问题