在调用exe文件时在Powershell脚本中获取错误

时间:2014-11-05 09:56:40

标签: powershell

我想从具有可变驱动器名称的驱动器调用exe文件。 代码首先搜索系统的每个驱动器中的路径,一旦发现它进入If条件,我想调用命令-bpimagelist。

以下是产生异常错误的代码。

for($pat=67 ;$pat -le 87 ;$pat++)
{
 $y = [char]$pat;
$path = $y+":\Veritas\Netbackup\bin\admincmd"
If((Test-Path $path))
{
Write-Host $path "is found in" $y "drive"
Invoke-Item $y":\Veritas\Netbackup\bin\admincmd\bpimagelist -client abc.ge.com -d 11/01/2014 -U"
break
}
Else
{
continue
}
}

错误:

PS C:\Documents and Settings\abala\Desktop> .\veritasscript.ps1
D:\Veritas\Netbackup\bin\admincmd is found in D drive
Invoke-Item : Cannot find path 'C:\Veritas\Netbackup\bin\admincmd\bpimagelist -
client hclinnobpm01.jnj.com -d 11\01\2014 -U' because it does not exist.
At C:\Documents and Settings\admin_broy5\Desktop\veritasscript.ps1:8 char:17
+      Invoke-Item  <<<< $y":\Veritas\Netbackup\bin\admincmd\bpimagelist -clien
t hclinnobpm01.jnj.com -d 11/01/2014 -U"

=============================================== ==

我不确定为什么当$ y的当前值为D时,错误显示C:\ Veritas,并且在写入主机行中,它打印为D驱动器中找到的路径。 有人可以建议一个方法来调用上面的exe文件吗?

2 个答案:

答案 0 :(得分:1)

更好的方法是使用Start-Process而不是其中一个Invoke命令。

以下是一个例子:

Start-Process "$y:\Veritas\Netbackup\bin\admincmd\bpimagelist" -argumentList @("-client abc.ge.com","-d 11/01/2014","-U")

如果这会引发相同的错误,你应该检查机器是否真的存在bpimagelist。

有关使用powershell运行可执行文件的更多信息,请查看Technet Wiki

答案 1 :(得分:0)

使用Invoke-Item

时,您使用了错误的cmdlet

将其更改为Invoke-Expressioniex

Invoke-Expression "$($y):\Veritas\Netbackup\bin\admincmd\bpimagelist -client abc.ge.com -d 11/01/2014 -U"