Das PowerShell SqlServer-Modul importiert nur Funktionen und Aliasnamen, jedoch keine Cmdlets

627
NReilingh

Ich versuche, das SqlServer PowerShell-Modul zu verwenden, das in der PowerShell-Galerie verfügbar ist .

Nach der Installation, entweder in -Scope CurrentUseroder in einer Admin-Sitzung, werden Import-Module SqlServernur drei Befehle in die Sitzung importiert:

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 

Dies geschieht trotz der Tatsache, dass das Tuning (Get-Module -Name SqlServer -ListAvailable)[0].ExportedCommands.Valuesalle Befehle auflistet, die enthalten sein sollen:

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 

Ich habe versucht, eine ältere Version des SqlServer-Moduls zu installieren sowie einen anderen Benutzeraccount auf meinem Computer. Viele Neustarts, neue PS-Sitzungen usw. Beim Ausführen Import-Moduledes verbose / debug-Modus werden keine Fehler ausgegeben. Es werden lediglich die Funktion und die Aliase importiert. keines der Cmdlets. Der Problemfaktor scheint dieses spezielle Windows-System zu sein, das Windows 10 Pro 1803 ist.

Es ist auch erwähnenswert, dass ich nur versuche, dieses Modul zu verwenden, da das mit SQL Server Management Studio installierte sqlps-Modul auf diesem Computer nicht mehr funktioniert. Ich weiß nicht, warum das so war. Meine Vermutung bezog sich auf ein Windows- oder SSMS-Update. Um jedoch an den Punkt zu gelangen, an dem das SqlServer-Modul mindestens ohne Fehler und Warnungen zum Clobbering installiert wird, habe ich dieses Modul aus meinem $ PSModulePath entfernt. Etwas anderes, das scheinbar zur gleichen Zeit brach, war, dass meine WSMan-Liste "TrustedHosts" zurückgesetzt wurde (auf "leer") und Probleme mit PowerShell-Remoting verursachte, die ich zuvor gelöst hatte (dieser Computer ist nicht mit der Domäne verbunden).

Wie kann ich das Problem beheben?

3
Verwenden Sie diesen Windows 10-Computer lediglich als Client für den Zugriff auf Clientebene usw.? Oder hat dieser Windows 10-Computer kritische Datenbankdateien, die als Server verwendet werden? Es ist interessant, dass die "sqlps" nicht mehr funktionieren, aber hoffentlich ist dies nur ein Client-Computer, der eher als kritischer Server verwendet wird, da es sich um einen Windows 10-Computer und nicht um Windows Server handelt. Das hört sich zwar nach einem Dummkopf an, aber zu schlecht, man könnte nicht versuchen, die "sqlps" stattdessen zum Laufen zu bringen. Wenn Sie hier nicht viel Glück haben, vergessen Sie https://dba.stackexchange.com/ nicht, falls nötig. Pimp Juice IT vor 5 Jahren 0
@PimpJuiceIT Richtig, ich habe nur die Management-Tools auf diesem Rechner installiert. Bisher riecht dies nach einem PowerShell-Problem und nicht nach einem SQL Server-Problem. Aus diesem Grund habe ich nicht in DBA.SE gepostet. Ich denke, ich würde gerne ein PS-Modul installieren / importieren, das anstelle von Funktionen auch kompilierte Cmdlets verwendet und ob das funktioniert, aber ich bin mir nicht sicher, wo ich danach suchen muss. NReilingh vor 5 Jahren 0
Welche Version von PowerShell verwenden Sie übrigens? Ich gehe von 5.0 aus, kann es aber ebenso gut bestätigen. Sie können ausführen ... `$ PSVersionTable` Pimp Juice IT vor 5 Jahren 0
5.1.17134.48 - ziemlich sicher, dass dies die aktuelle stabile Version ist. NReilingh vor 5 Jahren 0
Ich habe das gerade getestet und bekomme nicht das gleiche Ergebnis wie Sie. Ich habe PowerShell ISE als Administrator ausgeführt und dann über `Install-Module -Name SqlServer` installiert, aber ich hatte bereits das NuGet-Paket oder was auch immer für andere Module installiert, die ich auf diese Weise installiert habe, anstatt manuell heruntergeladen zu werden das ist sogar egal. Es scheint auch, dass ich als nächstes nicht 'Import-Module SqlServer' brauchte, sondern direkt zu 'Get-Command-Modul SqlServer' ging und alle angezeigt wurden. Pimp Juice IT vor 5 Jahren 0
@NReilingh hast du jemals eine Lösung dafür gefunden? Nach einem Windows-Update (1803) mit einem anderen binären Powershell-Modul, das kein CmdLet mehr exportiert und alle Optionen ausgeschöpft hat, läuft ein ähnliches Problem. Ich freue mich über alle tipps. ysalmi vor 5 Jahren 0
@ysalmi Keine Würfel. Meine derzeitige Lösung bestand darin, die VM wegzublasen und erneut zu erstellen. Klingt nach einem GitHub-Problem. NReilingh vor 5 Jahren 0
@NReilingh danke für das Update. Ihr Beitrag hier und dieses hier (https://forums.aws.amazon.com/thread.jspa?threadID=270534&tstart=0) sind die einzigen ähnlichen Fälle, die ich online gefunden habe. Ich habe es eigentlich mit dem gleichen AWS Powershell-Modul zu tun. Es fühlt sich an wie ein kaputtes Windows-Update, aber es ist wirklich schwierig, die Details aufzuspüren. ysalmi vor 5 Jahren 0
@ysalmi Ich habe ein UserVoice-Problem hinzugefügt, über das Sie abstimmen können: https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/35256367-module-cmdlets-missing-after-import-module NReilingh vor 5 Jahren 0
@NReilingh Ich habe dies schließlich durch eine Neuinstallation von Windows 10 Repair "behoben". Ich habe es auf ein Problem mit .Net 4.7.2 eingegrenzt, aber unter Windows 10 hatte ich keine Möglichkeit, es zu reparieren / neu zu installieren, da es ein Kernbestandteil des Betriebssystems ist. Und da dieser PC ziemlich alt ist, ursprünglich ein Windows 7-PC, sammelte er viele .NET-Versionen, und ich befand mich in einem Deadlock für Berechtigungen: Beim Versuch, .NET 4.7.2 zu reparieren, wurde versucht, .NET 4.6.1 zu deinstallieren Dann würde eine Fehlermeldung ausgegeben, dass .NET 4.5 jetzt eine Kernfunktion des Betriebssystems ist, die nur durch Aktivieren der Windows-Features _enabled_ aktiviert werden kann. ysalmi vor 5 Jahren 0
Ich habe auch bemerkt, dass ich die AWS Powershell-Tools zumindest importieren könnte, wenn ich Powershell V2 mit "powershell.exe -version 2" ausführte ysalmi vor 5 Jahren 0

1 Antwort auf die Frage

3
ysalmi

Die Ursache des Problems scheint eine fehlerhafte Installation von .Net 4.7.2 zu sein, die gelegentlich bei der Installation des 1803 Windows 10 Update auftritt.

Ich habe das Problem nur mit einer Windows 10 Repair Install beheben können . Dadurch werden alle Dateien und die Konfiguration des Betriebssystems neu installiert, Ihre Apps oder Daten werden jedoch nicht entfernt. Sie sollten jedoch unbedingt alle wichtigen Dokumente sichern, bevor Sie dies tun.

Andere haben Erfolg mit gefunden:

Möglicherweise möchten Sie diese Schritte ausführen, bevor Sie die Reparaturinstallation von Windows ausführen. Sie haben nicht für meine Situation gearbeitet.

Tolle. Die Reparaturinstallation hat hervorragend funktioniert - vielen Dank für Ihre Bemühungen, dies herauszufinden. NReilingh vor 5 Jahren 1