Модуль 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списке перечислены все команды, которые должны быть включены:

CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Add-RoleMember 21.0.17262 SqlServer Cmdlet Add-SqlAvailabilityDatabase 21.0.17262 SqlServer Cmdlet Add-SqlAvailabilityGroupListenerStaticIp 21.0.17262 SqlServer Cmdlet Add-SqlAzureAuthenticationContext 21.0.17262 SqlServer Cmdlet Add-SqlColumnEncryptionKeyValue 21.0.17262 SqlServer Cmdlet Add-SqlFirewallRule 21.0.17262 SqlServer Cmdlet Add-SqlLogin 21.0.17262 SqlServer Cmdlet Backup-ASDatabase 21.0.17262 SqlServer Cmdlet Backup-SqlDatabase 21.0.17262 SqlServer ... Cmdlet Test-SqlSmartAdmin 21.0.17262 SqlServer Cmdlet Write-SqlTableData 21.0.17262 SqlServer Function SQLSERVER: 21.0.17262 SqlServer Alias Decode-SqlName 21.0.17262 SqlServer Alias Encode-SqlName 21.0.17262 SqlServer 

Я попытался установить более старую версию модуля SqlServer, а также попробовал другую учетную запись пользователя на моей машине. Множество перезагрузок, новых сеансов PS и т. Д. Работа Import-Moduleв режиме подробного / отладочного режима не выдает никаких ошибок, она просто импортирует только функцию и псевдонимы; ни один из командлетов. Проблемным фактором, похоже, является именно эта система Windows, то есть Windows 10 Pro 1803.

Стоит также отметить, что я пытаюсь использовать этот модуль только потому, что модуль sqlps, который поставляется вместе с SQL Server Management Studio, перестал работать на этом компьютере. Я не знаю, почему это было так; моё предположение касалось обновления Windows или SSMS, но чтобы добраться до точки, где, по крайней мере, модуль SqlServer устанавливается без ошибок и предупреждений о клобберинге, я удалил этот модуль из моего $ PSModulePath. Еще одна вещь, которая, казалось бы, сломалась одновременно, заключалась в том, что мой список доверенных хостов WSMan был сброшен (пустым), что вызвало проблемы с удаленным удалением PowerShell, которые я решил ранее (эта машина не присоединена к домену).

Как, черт возьми, я могу решить эту проблему?

3
Вы просто используете этот компьютер с 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 . Это переустанавливает все основные файлы ОС и конфигурацию, но не удаляет ваши Приложения или данные. Но вы все равно должны сделать резервную копию важных документов, прежде чем делать это.

Другие нашли успех с:

Возможно, вы захотите попробовать эти шаги, прежде чем делать ремонтную установку Windows. Они не работают для моей ситуации.

Удивительно. Ремонтная установка работала просто замечательно - большое спасибо за ваши усилия в выяснении этого. NReilingh 6 лет назад 1