我遇到以下错误:
由于错误而无法运行此命令:系统找不到指定的文件。 + CategoryInfo:InvalidOperation :( :) [开始进程],InvalidOperationException + FullyQualifiedErrorId:InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand + PSComputerName:XXXXXX.yyy.com
以下是代码段:
if (($ToolsStatus -eq 'toolsOk' -OR $ToolsStatus -eq 'toolsOld') -AND $VMVSSStatus -eq $null -AND $OperatingSystem -match "64-bit" ) {
try{
Copy-Item -Path ".\64bit\$ToolsVersion.exe" -Destination "\\$FQDN\c$\" -Container -Recurse -Force -ErrorAction Stop
"File $ToolsVersion.exe copied on $vmName" | Do-Log
try {
Invoke-Command -ComputerName $FQDN -ScriptBlock {
Start-Process "C:\$ToolsVersion.exe" -ArgumentList '/s /v "/qn reboot=r ADDLOCAL=all"' -Wait
Start-Process "C:\$ToolsVersion.exe" -ArgumentList '/s /v "/qn reboot=r REMOVE=VSS"' -Wait
Start-Process "C:\$ToolsVersion.exe" -ArgumentList '/s /v "/qn reboot=r ADDLOCAL=VSS"' -Wait
"Installation completed on $vmName" | Do-Log
taskkill /IM vmtoolsd.exe /F
"VMtools process killed on $vmName" | Do-Log
Start-Service -Name VMTools
"VMware Tools service was started on $vmName" | Do-Log
}
}
catch [System.Management.Automation.RuntimeException]#PSRemotingTransportException
{
"Unable to install on $vmName. Following error was encountered:" +$_.Exception.GetType().FullName | Do-Log
}
请帮助。
答案 0 :(得分:1)
我猜想<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head/>
<body>
<p>This is an example.</p>
<pre>Text before<span class="tabspan"> </span>text in the middle<span class="tabspan"> </span>text after</pre>
</body>
</html>
变量在<xsl:variable name="BodyText">
<span class="tabspan">
<xsl:text>	</xsl:text>
</span>
</xsl:variable>
<xsl:template match="xhtml:pre">
<xsl:copy>
<xsl:call-template name="replace">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="searchString" select="'	'"/>
<xsl:with-param name="replacement" select="$BodyText"/>
</xsl:call-template>
</xsl:copy>
</xsl:template>
<xsl:template name="replace">
<xsl:param name="text"/>
<xsl:param name="searchString"/>
<xsl:param name="replacement"/>
<xsl:choose>
<xsl:when test="contains($text, $searchString)">
<xsl:value-of select="substring-before($text, $searchString)"/>
<xsl:copy-of select="$replacement"/>
<xsl:call-template name="replace">
<xsl:with-param name="text" select="substring-after($text, $searchString)"/>
<xsl:with-param name="searchString" select="$searchString"/>
<xsl:with-param name="replacement" select="$replacement"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
的范围内是未定义的,因为该范围是在远程计算机上执行的。
尝试:
$ToolsVersion
相反。
使用局部变量
您还可以在远程命令中使用局部变量,但是必须指出该变量是在本地会话中定义的。
从Windows PowerShell 3.0开始,可以使用“使用范围”修饰符在远程命令中标识本地变量。 ...
更新1:
要从远程检索日志,您必须将代码更改为:
Invoke-Command
此处,数组Start-Process "C:\$Using:ToolsVersion.exe" -ArgumentList '/s /v "/qn reboot=r ADDLOCAL=all"' -Wait
将通过网络序列化。在您的计算机上,它会反序列化,并且数组的每个条目都会发送到您的本地管道。
希望有帮助。