[powershell] два отдельных понимания, что такое текущая дира

by Темных Сергей 15.03.2009 22:55:00

В powershell-е есть два независимых понятия, что такое текущая дира:
одно у самого powershell-а, а другое у .net-а

т.е. pwd выдает одно
а [System.IO.Directory]::GetCurrentDirectory() - выдает совсем другое

 Это произошло из-за того, что в powershell-е добавили provider-ов, которые умеют бегать не только по файловой системе, а и по таким вещам: как реестр, wmi и т.д.

 Такая двуличность усложняет прозрачное использование .net-классов из под powershell-а, т.к. надо постоянно помнить, что у .net-а будет другая дира, чем у powershell-а.

В идеале бы хотелось, чтобы системная текущая дира ставилась на ту же самую, что и в powershell, если это возможно, а в остальных случаях - ставилось на какую-нибудь несуществующую диру (диру из которой нельзя прочитать/нельзя записать).

 Но разработчики powershell-а идеал такой не сделали, поэтому приходиться выкручиваться самому.

Есть два решения данной проблемы:

1. при вызове .net-ного кода устанавливать текущую диру .net-а равной текущей дире powershell-а

  [Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
 

2. передавать только полные пути в .net-код из powershell-а

для этого есть удобная функция convert-path, но будьте внимательны! к сожалению, она работает только для файлов, которые уже есть на диске. а если файл еще только предстоит создать, то увы...

  $fullpath = convert-path $filename
[System.Xml.Linq.XElement]::Load($fullpath)

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Похожие записи

Powered by BlogEngine.NET 1.3.1.0
Theme by Mads Kristensen

Сергей Темных

Модулятор


Calendar

<<  Октябрь 2017  >>
повтсрчепясуво
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

View posts in large calendar

Страницы

    Последние комментарии

    Категории

    None


    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2017

    Sign in