我正在使用Azure自定义脚本扩展来自动部署Azure VM。在一种情况下,我正在安装XAMPP并配置各种服务,但是在安装完所有内容后,apache进程不再运行。如果我登录到机器并手动启动它,它运行得很好。
这是我用来启动安装和配置XAMPP
的powershell脚本的脚本$password = ConvertTo-SecureString "password" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("$env:COMPUTERNAME\username", $password)
$command = $file = $PSScriptRoot + "\WebServerSetup.ps1"
Enable-PSRemoting –force
Invoke-Command -FilePath $command -Credential $credential -ComputerName $env:COMPUTERNAME
Disable-PSRemoting -Force
设置网络服务器的脚本相当长,但这里是我启动Apache服务的地方
Start-Process c:\xampp\apache_stop.bat
Start-Sleep -Seconds 15
Start-Job c:\xampp\apache_start.bat
运行自动化脚本后,所有配置都已完成,但进程未运行...如果我手动运行该命令,它可以正常工作。我认为问题是因为bat文件想要在自己的窗口中运行所以我尝试了“xampp_start.exe”,它没有打开一个新窗口,结果是一样的。
答案 0 :(得分:0)
问题似乎是Invoke-Command
会自动关闭执行命令后从其会话中启动的所有进程。
所以简单的解决方案应该是:
请勿使用Invoke-Command
启动您的PowerShell脚本。
如果您必须提供凭据,请尝试以下操作:
Start-Process powershell -ArgumentList "$command" -Credential $credential
否则只需运行脚本:
$command