Push-Location em Powershell não funciona da mesma forma que PUSHD em bat

1

EDIT: Alt título: New-PSDrive em Powershell não funciona da mesma forma que NET USE em morcego

Estou tentando carregar um script python no WinPython em um caminho UNC, portanto, preciso mapeá-lo para uma unidade. Eu tenho tudo isso trabalhando em um arquivo de morcego, mas não consigo fazê-lo funcionar no Powershell.

bat (funciona):

NET USE P: "\networkPath\WinPython\WinPython-32bit-3.6.1.0Zero"
PUSHD P:\
"P:\python-3.6.1\python.exe" "P:\loadRemix3D.pyw"

Powershell (falha):

New-PSDrive -Name P -PSProvider FileSystem -Root \networkPath\WinPython\WinPython-32bit-3.6.1.0Zero
Push-Location -Path P:\    
Start-Process -FilePath P:\python-3.6.1\python.exe -WorkingDirectory P:\python-3.6.1 -ArgumentList P:\loadRemix3D.pyw

O pathing está correto, já que o Powershell executa corretamente o Python e carrega o script Python, mas o pathing do script Python se comporta como se eu o tivesse carregado diretamente do UNC.

Como faço para que o Powershell funcione da mesma forma que o bastão?

EDITAR: De acordo com a resposta de Jeff, aqui está uma versão funcional do script Powershell:

NET USE P: "\networkPath\WinPython\WinPython-32bit-3.6.1.0Zero"
Push-Location -Path P:\
Start-Process -Wait -FilePath "P:\python-3.6.1\pythonw.exe" -WorkingDirectory "P:\python-3.6.1" -ArgumentList "P:\loadRemix3D.pyw"
NET USE P: /delete /y

A única outra coisa que eu precisava adicionar era excluir explicitamente o mapeamento, pois parece que os mapeamentos do NET USE persistem no contexto global do PowerShell (?).

    
por Geordie 09.06.2017 / 21:55

1 resposta

1

As unidades criadas usando o provedor FileSystem do PowerShell (ou seja, New-PSDrive -PSProvider FileSystem ) não são visíveis para processos "externos" e são "expandidas" para sua raiz quando passadas para esse processo externo. Em vez disso, use o mesmo comando NET USE que você faz para a versão em lote do programa.

    
por 09.06.2017 / 22:00