Модуль PowerShell SqlServer импортирует только функции и псевдонимы, но не использует командлеты
468
NReilingh
Я пытаюсь использовать модуль SqlServer PowerShell, доступный в галерее PowerShell .
После установки -Scope CurrentUserв сеанс администратора или в сеанс администратора выполнение Import-Module SqlServerтолько трех команд будет импортировано в сеанс:
PS C:\Users\nreiling> Get-Command -Module SqlServer CommandType Name Version Source ----------- ---- ------- ------ Alias Decode-SqlName 21.0.17262 sqlserver Alias Encode-SqlName 21.0.17262 sqlserver Function SQLSERVER: 21.0.17262 sqlserver
Это несмотря на то, что в (Get-Module -Name SqlServer -ListAvailable)[0].ExportedCommands.Valuesсписке перечислены все команды, которые должны быть включены:
Я попытался установить более старую версию модуля SqlServer, а также попробовал другую учетную запись пользователя на моей машине. Множество перезагрузок, новых сеансов PS и т. Д. Работа Import-Moduleв режиме подробного / отладочного режима не выдает никаких ошибок, она просто импортирует только функцию и псевдонимы; ни один из командлетов. Проблемным фактором, похоже, является именно эта система Windows, то есть Windows 10 Pro 1803.
Стоит также отметить, что я пытаюсь использовать этот модуль только потому, что модуль sqlps, который поставляется вместе с SQL Server Management Studio, перестал работать на этом компьютере. Я не знаю, почему это было так; моё предположение касалось обновления Windows или SSMS, но чтобы добраться до точки, где, по крайней мере, модуль SqlServer устанавливается без ошибок и предупреждений о клобберинге, я удалил этот модуль из моего $ PSModulePath. Еще одна вещь, которая, казалось бы, сломалась одновременно, заключалась в том, что мой список доверенных хостов WSMan был сброшен (пустым), что вызвало проблемы с удаленным удалением PowerShell, которые я решил ранее (эта машина не присоединена к домену).
Как, черт возьми, я могу решить эту проблему?
Вы просто используете этот компьютер с Windows 10 в качестве клиента для доступа на уровне клиента и т. Д.? Или на этой машине с Windows 10 есть важные БД, которые используются в качестве сервера? Интересно, что sqlps перестал работать, но, надеюсь, это всего лишь клиентский компьютер, а не используемый в качестве критического сервера, поскольку это компьютер с Windows 10, а не Windows Server. Это звучит как дурацкий, но слишком плохо, что вы не можете попытаться заставить работать `sqlps`. Если вам не очень повезло, не забывайте о https://dba.stackexchange.com/ при необходимости.
Pimp Juice IT 6 лет назад
0
@PimpJuiceIT Правильно, на этой машине установлены только инструменты управления. До сих пор это пахло проблемой PowerShell, а не проблемой SQL Server, поэтому я не публиковал в DBA.SE. Я думаю, что я хотел бы проверить установку / импорт модуля PS, который также использует скомпилированные командлеты вместо просто функций, и посмотреть, работает ли это, но я не уверен, где это искать.
NReilingh 6 лет назад
0
Кстати, какую версию PowerShell вы используете? Я предполагаю 5.0, но вполне могу подтвердить, я полагаю. Вы можете запустить ... `$ PSVersionTable`
Pimp Juice IT 6 лет назад
0
5.1.17134.48 - уверен, что это текущая стабильная версия.
NReilingh 6 лет назад
0
Я только что проверил это, и я не получаю тот же результат, что и вы. Я запустил PowerShell ISE в качестве администратора, а затем установил его с помощью `Install-Module -Name SqlServer`, но у меня уже был установлен пакет NuGet или что-то еще для других модулей, которые я установил таким образом, вместо загрузки вручную и т. Д., Если это даже важно. Также кажется, что мне не нужно было `Import-Module SqlServer` дальше, хотя я просто перешел к` Get-Command -Module SqlServer`, и он отобразил их все.
Pimp Juice IT 6 лет назад
0
@NReilingh вы когда-нибудь находили решение для этого? Я сталкиваюсь с подобной проблемой после обновления Windows (1803) с другим двоичным модулем Powershell, который больше не экспортирует CmdLet и исчерпал все опции. Я ценю любые советы.
ysalmi 6 лет назад
0
@ysalmi Нет игральных костей. Мое текущее решение состояло в том, чтобы сдуть виртуальную машину и построить ее заново. Похоже, что это нуждается в проблеме GitHub, все же.
NReilingh 6 лет назад
0
@NReilingh спасибо за обновление. Ваш пост здесь и этот (https://forums.aws.amazon.com/thread.jspa?threadID=270534&tstart=0) - единственные подобные случаи, которые я обнаружил в Интернете. Я на самом деле имею дело с тем же модулем AWS Powershell. Это похоже на сломанное обновление Windows, но очень трудно отследить детали.
ysalmi 6 лет назад
0
@ysalmi Я добавил проблему UserVoice, за которую можно голосовать: https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/35256367-module-cmdlets-missing-after-import-module
NReilingh 6 лет назад
0
@NReilingh Я наконец "решил" это, выполнив переустановку Windows 10 Repair. Я сузил его до проблемы с .Net 4.7.2, но в Windows 10 у меня не было средств, чтобы восстановить / переустановить его, потому что это основная часть ОС. И поскольку этот ПК довольно старый, изначально ПК с Windows 7, на нем скопилось много версий .NET, и я застрял в тупике разрешений: попытка восстановить .NET 4.7.2 заставила Windows попытаться удалить .NET 4.6.1, которая затем выдаст ошибку, что .NET 4.5 теперь является основной функцией ОС, которая может быть _enabled_ только при входе в Windows Features.
ysalmi 6 лет назад
0
о да, я также заметил, что мог бы по крайней мере импортировать инструменты AWS Powershell, если бы я запустил Powershell V2, используя `powershell.exe -version 2`
ysalmi 6 лет назад
0
1 ответ на вопрос
3
ysalmi
Источником проблемы является неправильная установка .Net 4.7.2, которая иногда происходит при установке 1803 Windows 10 Update.
Единственный способ, который мне удалось решить, - это установить Windows 10 Repair Install . Это переустанавливает все основные файлы ОС и конфигурацию, но не удаляет ваши Приложения или данные. Но вы все равно должны сделать резервную копию важных документов, прежде чем делать это.