View Single Post
Old 11-27-2006   #7 (permalink)
Bruce Payette [MSFT]


 
 

Re: How to execute (perl) scripts in Powershell without DOS box

Yes -we check $ENV:PATHEXT before directly executing a file. If the
extension is not there, then ShellExecute will be used instead which is why
you're seeing the pop-ups.

-bruce

--
Bruce Payette [MSFT]
Windows PowerShell Technical Lead
Microsoft Corporation
This posting is provided "AS IS" with no warranties, and confers no rights.



"Thomas Mogwitz" <ThomasMogwitz@discussions.microsoft.com> wrote in message
news:4F8CBEFD-B7D4-40A2-BB79-E05D11FE583D@microsoft.com...
> Yes, that's the solution. .pl wasn't in my pathext variable, and by adding
> it
> I achieved the behaviour I wanted.
> Thank you very much for your help!
>
> "Alex K. Angelopoulos [MVP]" wrote:
>
>> Check the value of this variable from within PowerShell:
>> $envathext
>> I can replicate the behavior you see if I remove .pl from the executable
>> extensions there. If it doesn't contain .pl, add it - e.g.,
>> $envathext = "${envathext};.pl"
>>
>> "Thomas Mogwitz" <Thomas Mogwitz@discussions.microsoft.com> wrote in
>> message
>> news:2E198CE6-2D74-440E-AC0B-E8E5E55CF5D5@microsoft.com...
>> > Hi folks,
>> >
>> > I am trying to execute a bunch of perl scripts from within a Powershell
>> > by simply writing their name (and pressing Return, of course). The
>> > problem is, everytime I do so a DOS box (cmd.exe) pops up, displays
>> > the script output and closes itself. I instead want to see the output
>> > in my Powershell.
>> > I get the desired result by executing "perl.exe xyz.pl", but why not
>> > when I simply execute the script?
>> >
>> > I searched the registry and found out that the file ending '.pl' is
>> > associated with a 'PersistentHandler' that is connected to a class id
>> > with
>> > 'query.dll' as 'InProcServer32'. Here I'm stuck. I suppose that this
>> > query.dll again searches the registry for the registered file type .pl
>> > and
>> > finds out that it is linked to the file type 'Perl', which has a shell
>> > open
>> > command 'perl.exe %1'. So what's the difference between finding that
>> > out and running perl.exe with my script and me executing
>> > "perl.exe xyz.pl"?

>>
>>
>>



My System SpecsSystem Spec