如何调试隐藏的电源外壳脚本



我正在编写一个脚本,该脚本通常会被另一个应用程序(VMware vCenter Server)调用。从该应用程序中,我触发了一个批处理文件(重定向.bat)并传递一个变量,该变量是powershell脚本名称(TestMe.ps1)。

该脚本放置在Windows服务器上,当我进入Windows服务器的命令提示符并调用重定向脚本时,我看到我的PowerShell脚本按预期运行。但是,当我从应用程序触发它时,Powershell 脚本未运行或未产生输出。我确认重定向.bat正在运行,因为重定向.bat在日志文件中写入一行。

vCenter Server 應用程式正在「本地系統」帳戶下執行。可能是权限错误吗?LocalSystem 是否允许运行 Powershell 脚本?

我现在不知道 Powershell 脚本是否启动,因为它(当然)在运行时在我的控制台中不可见。批处理文件始终返回错误级别 = 0。

有关如何在脚本中插入应始终提供输出的调试信息的任何提示?有关如何解决此问题的提示?

重定向.bat:

set POWERSHELL=C:WINDOWSsystem32windowspowershellv1.0powershell.exe -nologo -noprofile -noninteractive
SET ERRORLEVEL =
echo %1 > G:DataStoreAlarmsLogRedirect-batch.txt
start %POWERSHELL% -command "&"%1"" 
echo Error level:  %ERRORLEVEL% >> G:DataStoreAlarmsLogRedirect-batch.txt

我从命令行和应用程序调用重定向.bat如下所示:

redirect.bat G:DataStoreAlarmsScriptsTestGabrie.ps1

TestGabrie.ps1:

$String = "This is a test"
$String | Out-File -FilePath "G:DataStoreAlarmsLogPowershell.txt" -Append

问候加布里

问题似乎是 START 命令:

start %POWERSHELL% -command "&"%1""

将其更改为此后,它起作用了:

%POWERSHELL% -command "&"%1""

感谢您的帮助。

最新更新