View Single Post
Old 11-29-2006   #8 (permalink)
Alex K. Angelopoulos [MVP]


 
 

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

btw, I'm beginning to think that PowerShell should be able to make decisions
about "document execution" that are distinct from the Windows shell
decisions. Has a PS-based ftype/assoc "overlay" ability been discussed yet?
I think we can make a good case for this.

"Bruce Payette [MSFT]" <brucepay@microsoft.com> wrote in message
news:erKkIonEHHA.1220@TK2MSFTNGP04.phx.gbl...
> 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