如何调试隐藏的PowerShell脚本?

时间:2015-01-09 15:50:18

标签: debugging powershell

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

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

vCenter Server应用程序在本地系统帐户下运行。这可能是权限错误吗? LocalSystem是否允许运行Powershell脚本?

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

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

redirect.bat:

set POWERSHELL=C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -nologo -noprofile -noninteractive
SET ERRORLEVEL =
echo %1 > G:\DataStoreAlarms\Log\Redirect-batch.txt
start %POWERSHELL% -command "&"%1"" 
echo Error level:  %ERRORLEVEL% >> G:\DataStoreAlarms\Log\Redirect-batch.txt

我从命令行和应用程序中调用redirect.bat,如下所示:

redirect.bat G:\DataStoreAlarms\Scripts\TestGabrie.ps1

TestGabrie.ps1:

$String = "This is a test"
$String | Out-File -FilePath "G:\DataStoreAlarms\Log\Powershell.txt" -Append

此致 Gabrie

1 个答案:

答案 0 :(得分:0)

问题似乎是START命令:

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

将其更改为此后,它有效:

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

感谢您的帮助。