我试图使用invoke-command在远程机器上执行代码。 该方法的一部分包括一个ScriptBlock参数,我知道我没有做正确的事情。
param([string] $filename) function ValidatePath( $file,$fileType = "container" ) { $fileExist = $null if( -not (test-path $file -PathType $fileType) ) { throw "The path $file does not exist!" $fileExist = false } else { echo $filename found! $fileExist = true } return $fileExist } $responSEObject = Invoke-Command -ComputerName MININT-OU9K10R -ScriptBlock{validatePath($filename)} -AsJob $result = Receive-Job -id $responSEObject.Id echo $result
要调用这个,我会这样做.myScriptName.ps1 -filename C:filetotest 。 该脚本将执行,但不会调用该函数。
然后我想,也许我应该把这个function放到一个新的脚本中。 这看起来像:
如何远程启动不同系统上的应用程序?
如何使用c#.net获取计算机运行过程的详细信息?
Registry.SetValue不适用于x86
实施可靠的日志
定位框架突然从VS 2017失踪
文件1:
$responSEObject = Invoke-Command -ComputerName MININT-OU9K10R -ScriptBlock { .file2.ps1 -filename C:something } -AsJob $result = Receive-Job -id $responSEObject.Id echo $result
文件2:
Param([string] $filename)
这两种方法都不会执行这个function,我想知道为什么; 或者,我需要做些什么来使其工作。
function ValidatePath( $file,$fileType = "container" ) { $fileExist = $null if( -not (test-path $file -PathType $fileType) ) { throw "The path $file does not exist!" $fileExist = false } else { echo $filename found! $fileExist = true } return $fileExist }
成为“真正的pipe理员”(Windows),并在.NET C#中执行真正的pipe理任务?
从PowerShell挂起或hibernate
我怎么能告诉我的应用程序窗口是前景窗口
非COM,非.NET DLL的正确名称?
使用C#在远程计算机上设置date,时间和时区
这是因为Invoke-Command在远程计算机的脚本块中执行代码。 远程计算机上没有定义ValidatePath函数,而脚本文件file2.ps1在那里不存在。 没有任何东西可以让远程计算机访问执行Invoke-Command的脚本中的代码或运行脚本的计算机上的文件。 您需要将file2.ps1复制到远程计算机,或将其提供给计算机上共享该文件的共享的UNC路径,或者将ValidatePath函数的内容放在脚本块中。 确保将$ file的所有实例更改为$ filename ,反之亦然,并使代码交互式运行,例如,您将消除$ fileExist和return语句。
要将路径验证代码放在传递给远程计算机的scriptblock中,你可以这样做:
$scriptblock = @" if (-not (Test-Path $filename -PathType 'Container') ) { throw "The path $file does not exist!" } else { echo $filename found! } "@ $responSEObject = Invoke-Command -ComputerName MININT-OU9K10R -ScriptBlock{$scriptblock} -AsJob
注意确保“@不缩进,它必须在行的开头。
顺便说一句,虽然这是没有争议的,那么在抛出语句后立即设置变量有什么意义? 一旦你抛出一个错误,函数终止。 $fileExist = false在任何情况下都不会执行。 您可能想要使用写入错误 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。