В чем разница в том, как я запускаю консоль powershell?

Я работаю с Sharepoint, и мне нужно, чтобы оснастка Sharepoint присутствовала на моем хосте консоли. Когда я запускаю powershell из меню «Пуск» Windows, я запускаю команду

Add-PSSnapin Microsoft.Sharepoint.Powershell

оснастка добавлена ​​нормально, и все работает хорошо.

Также все в порядке, когда я запускаю cmd.exe, набираю в нем powershell.exe и нажимаю ввод. Поэтому я думаю, что в этой проблеме не участвуют параметры быстрого доступа (но я не уверен на 100% :)).

Но когда я запускаю powershell через какой-то лаунчер (я тестировал Launchy и Enso), и я пытаюсь добавить ту же самую оснастку, это не удается с этим сообщением об ошибке:

Add-PSSnapin : No snap-ins have been registered for Windows PowerShell version 2.
At somefile.ps1:7 char:14
+     Add-PSSnapin <<<<  Microsoft.Sharepoint.Powershell
+ CategoryInfo          : InvalidArgument:(Microsoft.Sharepoint.Powershell:String)     
[Add-PSSnapin], PSArgumentException
+ FullyQualifiedErrorId : 
AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand

В чем разница, когда я запускаю powershell с помощью лаунчера?

Я думаю, что это не проблема, связанная с sharepoint, а проблема с powershell.

(примечание: я знаю о командной оболочке Sharepoint, и вопрос не об этом)


person jumbo    schedule 28.05.2012    source источник


Ответы (1)


Не уверен на 100%, но у вас могут возникнуть проблемы с 32-разрядной версией PowerShell по сравнению с 64-разрядной версией PowerShell.

Например, если ваш SnapIn 64-битный, его можно использовать только с 64-битным PowerShell. Если Launchy и Enso являются 32-разрядными, они запускают 32-разрядную версию PowerShell, которая ищет 32-разрядную оснастку. То же самое и в другую сторону.

Из 64-битного процесса вы можете принудительно использовать 64-битную версию PowerShell, используя:

c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe

Из 64-битного процесса вы можете принудительно использовать 32-битную версию PowerShell, используя:

c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe

Из 32-разрядного процесса вы можете принудительно использовать 64-разрядную версию PowerShell с помощью (прочитайте эту а>):

c:\windows\sysnative\WindowsPowerShell\v1.0\powershell.exe
person JPBlanc    schedule 28.05.2012
comment
Ок, в этом разница. Спасибо. У меня есть оба варианта, когда я набираю powershell — Windows Powershell и Windows Powershell (x86). Но powershell запускается как 32-битная, независимо от того, какую версию я пытаюсь запустить. (Я думаю, Enso 32-битный.) Это нормальное поведение? Есть ли способ запустить 64-битную PowerShell из 32-битной программы запуска? - person jumbo; 28.05.2012