2014-11-05 36 views
0

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

下面是代码,它给出了一个不寻常的错误。

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" 

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

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

+0

是的,它确实存在于d驱动器,这就是为什么输出的第一行是 - “d:\ VERITAS \的Netbackup \ BIN \ admincmd有是发现在D驱动器“ – 2014-11-05 17:34:13

+0

没有先生,甚至包括在TestPath中的bpimagelist不起作用。 目前为了测试目的,我试图用下面的代码调用位于C:\ Windows \ syste32下的fsutil.exe,但即使这样也行不通。 Invoke-Expression“volume diskfree”$ y“:” 有什么建议吗? – 2014-11-05 17:36:43

回答

0

您使用了错误的cmdlet时使用Invoke-Item

将其更改为Invoke-Expressioniex

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

即使这样也行不通。 对于一个简单的测试,我试图调用Windows fsutil文件: Invoke-Expression“fsutil volume diskfree”$ y“:” 但即使这样也行不通。以下错误: Invoke-Expression:无法找到接受参数'C:'的位置参数。 – 2014-11-05 17:31:27

+0

由于冒号,请谨慎使用该命令。它应该是:'Invoke-Expression'fsutil volume diskfree $($ y):“' – arco444 2014-11-05 17:34:05

+0

事实上,当我尝试粘贴的命令时出现同样的错误,所以你错了。我会用你的问题中的完整命令进行测试,然后才能确定它不起作用 – arco444 2014-11-05 17:35:05

1

一个更好的办法来做到这一点是使用Start-Process,而不是之一Invoke命令。

下面是一个例子:如果抛出了同样的错误,你应该检查机器是否真的的bpimagelist存在

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

有关使用PowerShell运行可执行文件的详细信息请查看Technet Wiki

+0

明天当我到达Prod环境中的办公室时,我会尝试启动过程。同时在家里,我试图在Invoke-Expression里面调用带有变量驱动器名称的简单fsutil.exe,它现在可以与arco444的有用答复一起使用。但这不是我的要求。我想调用表达式中没有几个开关的bpimagelist,我不知道它会起作用或不起作用。我将在明天尝试并在这里发布。谢谢 – 2014-11-05 17:48:15

相关问题