2016-06-22 10 views
2

Ich habe eine Neuinstallation von Win10 und Powershell 5.0. Ich habe Update-Hilfe ausgeführt und die meisten Dinge funktionieren gut; Get-Command gibt jedoch eine Nullreferenzausnahme zurück, unabhängig davon, ob ich im regulären Modus oder im erhöhten Modus bin. Ich habe auch versucht, Powershell von Run mit -noprofile auszuführen, und ich bekomme immer noch den gleichen Fehler sowohl im Benutzer- als auch im erhöhten Modus. Hier sind einige weitere Informationen:Powershell 5.0/Windows 10 Get-Command Null Referenz Ausnahme

PS Z:\> Get-WmiObject Win32_OperatingSystem | Select-Object -Property Version, ServicePackMajorVersion, ServicePackMinorVersion 

Version ServicePackMajorVersion ServicePackMinorVersion 
------- ----------------------- ----------------------- 
10.0.10586      0      0 

PS Z:\> $PSVersionTable 

Name       Value 
----       ----- 
PSVersion      5.0.10586.122 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} 
BuildVersion     10.0.10586.122 
CLRVersion      4.0.30319.42000 
WSManStackVersion    3.0 
PSRemotingProtocolVersion  2.3 
SerializationVersion   1.1.0.1 

PS Z:\> get-command 
>> TerminatingError(Get-Command): "Object reference not set to an instance of an object." 
get-command : Object reference not set to an instance of an object. 
At line:1 char:1 
+ get-command 
+ ~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Get-Command], NullReferenceException 
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.GetCommandCommand 
get-command : Object reference not set to an instance of an object. 
At line:1 char:1 
+ get-command 
+ ~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Get-Command], NullReferenceException 
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.GetCommandCommand 

PS Z:\> $error[0] | format-list * -force 


PSMessageDetails  : 
Exception    : System.NullReferenceException: Object reference not set to an instance of an object. 
          at Microsoft.PowerShell.Commands.GetCommandCommand.IsCommandMatch(CommandInfo& current, Boolean& isDuplicate) 
          at Microsoft.PowerShell.Commands.GetCommandCommand.AccumulateMatchingCommands(IEnumerable`1 commandNames) 
          at System.Management.Automation.CommandProcessor.ProcessRecord() 
TargetObject   : 
CategoryInfo   : NotSpecified: (:) [Get-Command], NullReferenceException 
FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.GetCommandCommand 
ErrorDetails   : 
InvocationInfo  : System.Management.Automation.InvocationInfo 
ScriptStackTrace  : at <ScriptBlock>, <No file>: line 1 
PipelineIterationInfo : {} 



PS Z:\> $error[0].line 
PS Z:\> $error[0].exception | format-list * -force 


Message  : Object reference not set to an instance of an object. 
Data   : {} 
InnerException : 
TargetSite  : Boolean IsCommandMatch(System.Management.Automation.CommandInfo ByRef, Boolean ByRef) 
StackTrace  : at Microsoft.PowerShell.Commands.GetCommandCommand.IsCommandMatch(CommandInfo& current, Boolean& isDuplicate) 
        at Microsoft.PowerShell.Commands.GetCommandCommand.AccumulateMatchingCommands(IEnumerable`1 commandNames) 
        at System.Management.Automation.CommandProcessor.ProcessRecord() 
HelpLink  : 
Source   : System.Management.Automation 
HResult  : -2147467261 

Nach dem Ausführen von update-Hilfe sowohl Benutzer und erweiterten Modus, das nächste, was ich in Powershell tat, war installieren SQL Power Doc so bin ich nicht sicher, ob das das Problem verursacht, weil ich don‘ t rufen Sie Get-Command vor der Installation ab.

Während der Installation ich diese Befehle erteilt:

Set-ExecutionPolicy RemoteSigned -Force 

New-Item -type directory -path "$([Environment]::GetFolderPath([Environment+SpecialFolder]::MyDocuments))\WindowsPowerShell\Modules" 

Set-Location "$([Environment]::GetFolderPath([Environment+SpecialFolder]::MyDocuments))\WindowsPowerShell" 

Wenn ich Hilfe laufen auf Get-Command - es ohne Fehler funktioniert:

PS Z:\> help get-command 

NAME 
    Get-Command 

SYNOPSIS 
    Gets all commands. 


SYNTAX 
    Get-Command [[-ArgumentList] [<Object[]>]] [-All] [-FullyQualifiedModule [<ModuleSpecification[]>]] [-ListImported] [-Module [<String[]>]] [-Noun [<String[]>]] [-ParameterName [<String[]>]] [-ParameterType [<PSTypeName[]>]] [-ShowCommandInfo] [-Syntax] [-TotalCount 
    [<Int32>]] [-Verb [<String[]>]] [<CommonParameters>] 

    Get-Command [[-Name] [<String[]>]] [[-ArgumentList] [<Object[]>]] [-All] [-CommandType {Alias | Function | Filter | Cmdlet | ExternalScript | Application | Script | Workflow | Configuration | All}] [-FullyQualifiedModule [<ModuleSpecification[]>]] [-ListImported] 
    [-Module [<String[]>]] [-ParameterName [<String[]>]] [-ParameterType [<PSTypeName[]>]] [-ShowCommandInfo] [-Syntax] [-TotalCount [<Int32>]] [<CommonParameters>] 


DESCRIPTION 
    The Get-Command cmdlet gets all commands that are installed on the computer, including cmdlets, aliases, functions, workflows, filters, scripts, and applications. Get-Command gets the commands from Windows PowerShell modules and snap-ins and commands that were 
    imported from other sessions. To get only commands that have been imported into the current session, use the ListImported parameter. 

    Without parameters, a Get-Command command gets all of the cmdlets, functions, workflows and aliases installed on the computer. A Get-Command * command gets all types of commands, including all of the non-Windows-PowerShell files in the Path environment variable 
    ($env:path), which it lists in the "Application" command type. 

    A Get-Command command that uses the exact name of the command (without wildcard characters) automatically imports the module that contains the command so you can use the command immediately. To enable, disable, and configure automatic importing of modules, use the 
    $PSModuleAutoLoadingPreference preference variable. For more information, see about_Preference_Variables (http://go.microsoft.com/fwlink/?LinkID=113248). 

    Get-Command gets its data directly from the command code, unlike Get-Help, which gets its information from help topics. 

    In Windows PowerShell 2.0, Get-Command gets only commands in current session. It does not get commands from modules that are installed, but not imported. To limit Get-Command in Windows PowerShell 3.0 and later to commands in the current session, use the 
    ListImported parameter. 

    Starting in Windows PowerShell 5.0, results of the Get-Command cmdlet display a Version column by default; a new Version property has been added to the CommandInfo class. 


RELATED LINKS 
    Online Version: http://go.microsoft.com/fwlink/p/?linkid=289583 
    Export-PSSession 
    Get-Help 
    Get-Member 
    Get-PSDrive 
    Import-PSSession 
    about_Command_Precedence 

REMARKS 
    To see the examples, type: "get-help Get-Command -examples". 
    For more information, type: "get-help Get-Command -detailed". 
    For technical information, type: "get-help Get-Command -full". 
    For online help, type: "get-help Get-Command -online" 

Sieht jemand etwas offensichtlich? Jede Hilfe wird geschätzt.

+0

Nur zur Klarstellung: Sie haben Windows 10 OS frisch installiert, aber nicht manuell versucht, PowerShell 5.0 zu installieren? Seit PS 5 kommt mit 10? – gravity

+1

Das ist richtig. – SFAgitator

+1

Es könnte sich lohnen, das 'Modules'-Verzeichnis vorübergehend umzubenennen und' Get-Command' erneut auszuführen, um zu sehen, ob das behoben wurde. Nachdem ich gesehen habe, dass Sie ein Modul hinzugefügt haben, wette ich, dass es verwandt ist. Wenn das nicht funktioniert, stelle es wieder her und lass es uns wissen ...;) – gravity

Antwort

3

Es könnte sich lohnen, das Verzeichnis Modules vorübergehend umzubenennen und dann Get-Command erneut auszuführen, um zu sehen, ob das Problem behoben wurde.

(Pro den Kommentar oben in der Frage, es sieht aus wie dies die Lösung war.)

0

ich gerade über diese Frage gestolpert, da ich das gleiche Problem bekam. Es ist vermutlich mit dem Modul RDS-Manager verwandt, der mit der SQL Powerdoc-Lösung ausgeliefert wird. Die RDS.Manager ist von TechNet Galerie: http://gallery.technet.microsoft.com/ScriptCenter/e8c3af96-db10-45b0-88e3-328f087a8700/

Ich habe den gesamten Ordner aus meinen Module Ordnern entfernt und alles war wieder in Ordnung. Hinzugefügt das RDS-Modul und die NullReference Exception war wieder da.

+0

Seltsam, nach dem Entfernen und Hinzufügen des RDS-Moduls funktioniert es gut. –

Verwandte Themen