如何在powershell中将参数传递给批处理

时间:2013-10-21 01:37:18

标签: powershell batch-file parameters start-process

我的PowerShell脚本有问题。我正在尝试检查收件箱中收到的电子邮件。当电子邮件到达收件箱时,脚本会调用批处理文件,该文件会保存数据库中收到的电子邮件的某些数据。当我使用字符串(测试)调用批处理文件时,一切都工作正常,但是当我尝试使用我需要保存的实际信息更改其中一个参数时,不会调用批处理文件。这是我的代码。

$MailboxName = "[my address]"
...
Microsoft.Exchange.WebServices.Data.StreamingSubscriptionConnection($service, 30);
    $stmConnection.AddSubscription($stmsubscription)
    Register-ObjectEvent -inputObject $stmConnection -eventName "OnNotificationEvent" -Action {
        foreach($notEvent in $event.SourceEventArgs.Events){    
            [String]$itmId = $notEvent.ItemId.UniqueId.ToString()
            $message = [Microsoft.Exchange.WebServices.Data.EmailMessage]::Bind($event.MessageData,$itmId)
            $name=$message.sender.Name.ToString()
            $arguments= "param1" , "param2"  ,"param3" ,  "param4"  , "param5"  , "param6"   ,"param7" , 1      
            $arguments + (Get-Date) | Out-File c:\temp\log2.txt -Append 
            Start-Process  "spiderT.bat" $arguments 

        } 
        } -MessageData $service
        Register-ObjectEvent -inputObject $stmConnection -eventName "OnDisconnect" -Action {$event.MessageData.Open()} -MessageData $stmConnection
       ...
...

现在,如果我改变

$arguments= "param1", "param2"  ,"param3" ,  "param4"  , "param5"  , "param6"   ,"param7" , 1   

通过

$arguments= $name , "param2"  ,"param3" ,  "param4"  , "param5"  , "param6"   ,"param7" , 1

看起来好像没有调用批处理文件(我看到的最后一件事是日志,但不是数据库中的数据)。发生了什么事?

1 个答案:

答案 0 :(得分:0)

也许$name有空格而且搞乱了?如果你将$name放在双引号中怎么样:

$arguments= "$name" , "param2"  ,"param3" ,  "param4"  , "param5"  , "param6"   ,"param7" , 1