2015-07-30 3 views
5

Я нашел много потоков и прошел через них, но ни один из них действительно не затронул мою проблему. Я стараюсь держать его коротким.Команда запускается в ISE, но не как ps1 в консоли

New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\dom\dfs\dom-loc-Share" –Persist 

Он отлично работает, если я запускаю его из ISE. Он отлично работает, когда я копирую его в консоль. Это не работает, если я пытаюсь запустить ps1 в консоли.

  • Я перезапустил ISE
  • я проверил и как работать в однотридовой квартира
  • ExecutionPolicy является неограниченным
  • Я бегу и как администратор

Можете ли вы мне помочь?

+0

Вы получаете сообщение об ошибке от 'New-PSDrive'? –

+0

Нет, если я запускаю вручную в консоли: 'C: \ temp> New-PSDrive -Описание« Gruppen-Laufwerk »-Name« G »-PSProvider FileSystem -Root« \\ domain \ dfs \ domain-location-Share "- Persist' он отлично работает – Asharon

+0

Да, я получил это, но когда вы запускаете скрипт, вы не получаете ошибку, он просто не монтирует том G: это правильно понято? –

ответ

3

Использование -Scope Global, для получения дополнительной информации посетите Technet статью:

about_Scopes https://technet.microsoft.com/en-us/library/hh847849.aspx

[...] Windows PowerShell защищает доступ к переменным, псевдонимы, функции, и дисков Windows PowerShell (PSDrives) путем ограничения, где они могут быть читать и изменять. Применяя несколько простых правил для области видимости, Windows PowerShell помогает избежать непреднамеренного изменения элемента , который не следует изменять. [...]

New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\dom\dfs\dom-loc-Share" –Persist -Scope Global 
+1

Да! Этого не хватало. Теперь он отлично работает - большое вам спасибо! – Asharon

1

Как вы проверяете, отображен ли диск G?

При запуске ниже в сценарии, который покажет вам, с помощью Get-PSDrive, если это был создан диск:

if(Get-PSDrive | ?{$_.Name -eq "G"}) { 
    'Removing G' 
    Remove-PSDrive "G" 
} 


'Adding G' 
New-PSDrive –Name "G" –PSProvider FileSystem –Root "\\ukcconas2edc\ax_docs" –Persist 


'Does G Exist?' 
Get-PSDrive | ?{$_.Name -eq "G"} 

Если вы просто проверить с помощью Windows Explorer, я думаю, что некоторые забавные вещи случаются с кеширование там. После запуска сценария нажмите Computer, затем на правой панели (где указаны диски) щелкните правой кнопкой мыши и выберите Refresh; надеюсь, теперь будет показан диск G.

Кроме того, если у вас есть другая консоль PowerShell, и вы проверяете запуск push-location g: или get-psdrive, если сеанс, который вы используете для проверки диска, был создан до того, как этот диск был создан, он не будет перечислять его , Я предполагаю, что это связано с кэшированием в powershell/возможно, преднамеренно, чтобы избежать параллельного запуска скриптов из-за вмешательства друг в друга?

+1

Большое спасибо, я только опубликовал часть скрипта, чтобы сохранить ответ на этот вопрос. Спасибо за ваш вклад, но я буду использовать его для улучшения моей версии. – Asharon