Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Misc Newsgroups > PowerShell

Vista - Running a command from inside a script, command line is corrupted

Reply
 
Old 02-24-2009   #1 (permalink)
Raymond Vought


 
 

Running a command from inside a script, command line is corrupted

Hello,

I am trying to give Powershell a chance, since it seems like it may have
some promise.

I have this powershell script that needs to run an executable occasionally,
using logic from the script. The executable has a command line that is
sensitive to spacing so it has to be just right. In particular, my script
needs to run the wlogevent.exe like this:

c:\temp\wlogevent.exe -c:41 -l:3 -ss:"String status message here."

In cmd.exe, wlogevent works when called as above. But if you try to run
wlogevent with spaces after the colons it it's command line like this

c:\temp\wlogevent.exe -c: 41 -l: 3 -ss: "IIS7 is in place."

it will not work.

So in my script I create a string command like this:

$command = "c:\temp\wlogevent.exe -c:41 -l" + [char]58 + $Args[1] + " -ss" +
[char]58 + [char]34 + $Args[0] + [char]34
Where $Args[0] and Args[1] are string parameters of a function. I'm using
[char]58 for the ":" character because I sense there's domething weird about
colons in powershell.

Anyway, when I write-host $command, it looks correct in the console output;
spacing is correct throughout.

But when I invoke-expression $command, spaces somehow insinuate themselves
after the colons in the command line, and it doesn't work. I know this by
viewing the command line of the spawned process, and that command line is

c:\temp\wlogevent.exe -c: 41 -l: 3 -ss: "IIS7 is in place."

There is a space after every colon except the one in the path. What is
going on here?

Thanks,

RFV








My System SpecsSystem Spec
Old 02-24-2009   #2 (permalink)
DennisD


 
 

Re: Running a command from inside a script, command line is corrupted

try it like this:

param (
$arg1,
$arg2
)

$command = "c:\temp\wlogevent.exe -c:41 -l:$arg1 -ss:`"$arg2`""

write-host $command


B.t.w.: "I am trying to give Powershell a chance, since it seems like
it may have
some promise." L0L
My System SpecsSystem Spec
Old 02-24-2009   #3 (permalink)
Raymond Vought


 
 

Re: Running a command from inside a script, command line is corrupted

Thank you for responding. I implemented your suggestion so that my function
looks like this:

Function InformMe {

param (

$arg1,

$arg2

)

$command = "c:\temp\wlogevent.exe -c:41 -l:$arg2 -ss:`"$arg1`""

write-host $command

invoke-expression $command

}

This works in exactly the same way as my other code; the write-host output
looks good, but wlogevent.exe breaks because there are spaces in the command
line after the colons.

In particular, the write host output in my case looks like this:

c:\temp\wlogevent.exe -c:41 -l:3 -ss:"IIS7 is in place."

which is perfect. But the spawned process has command line

"C:\temp\wlogevent.exe" -c: 41 -l: 3 -ss: "IIS7 is in place."

(as captured using sysinternals process explorer)

What is it about colons in powershell?

RFV






"DennisD" <dennis.damen@xxxxxx> wrote in message
news:c502bce8-404b-47ff-9c3f-06cb4f643dbd@xxxxxx
Quote:

> try it like this:
>
> param (
> $arg1,
> $arg2
> )
>
> $command = "c:\temp\wlogevent.exe -c:41 -l:$arg1 -ss:`"$arg2`""
>
> write-host $command
>
>
> B.t.w.: "I am trying to give Powershell a chance, since it seems like
> it may have
> some promise." L0L

My System SpecsSystem Spec
Old 02-24-2009   #4 (permalink)
DennisD


 
 

Re: Running a command from inside a script, command line is corrupted

I don't think it has anything to do with the colons. Could you try the
following:

param (
$arg1,
$arg2
)

$command = "echo -c:41 -l:$($arg1.trim()) -ss:`"$($arg2.Trim())`""
My System SpecsSystem Spec
Old 02-24-2009   #5 (permalink)
Raymond Vought


 
 

Re: Running a command from inside a script, command line is corrupted

One of the args I am passing is a "3", so can't do .trim() since the "3" has
been secretly cast as a [System.Int32].

Using your suggestion, we get error output like this:

Method invocation failed because [System.Int32] doesn't contain a method
named
'trim'.

Thanks for the suggestion all the same. Tried like this next:

$command = "c:\temp\wlogevent.exe -c:41 -l:$($arg2) -ss:`"$($arg1.Trim())`""

This results in the same behavior as before. When we write-host the string
it looks fine, but when powershell shells this command string, it changes
the comand string so that where-ever there was "-x:", there's a "-x: ".



"DennisD" <dennis.damen@xxxxxx> wrote in message
news:4349673c-731c-49ac-9392-07c2778d5671@xxxxxx
Quote:

>I don't think it has anything to do with the colons. Could you try the
> following:
>
> param (
> $arg1,
> $arg2
> )
>
> $command = "echo -c:41 -l:$($arg1.trim()) -ss:`"$($arg2.Trim())`""

My System SpecsSystem Spec
Reply

Thread Tools


Similar Threads
Thread Forum
How to pass the name of a PowerShell script as a command line para PowerShell
noob: PS script fails, but runs from command line PowerShell
Running a Command line script from within powershell. PowerShell
Script from command-line PowerShell
Running PS1 file from command line PowerShell


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46