2016-06-21 4 views
0

Ich habe ein Powershell-Skript, das innerhalb der Powershell-ISE ausgeführt und kompiliert wird. Allerdings muss ich es in eine EXE komprimieren, damit die Benutzer, die meine Anwendung verwenden, es leicht öffnen können. Um dies zu tun, habe ich gefunden, dass ich entweder Primalcript oder Primalforms verwenden sollte. Das Problem besteht darin, dass bestimmte Cmdlets Fehlermeldungen bei einem dieser beiden Programme ausgeben, wenn ich versuche, das Skript auszuführen.Premalscript/Primalforms erkennt keine Powershell-Cmdlets

Zum Beispiel die Zeile:

$freeRam = Get-CimInstance -ClassName win32_operatingsystem | 
Select-Object -expand FreePhysicalMemory 

gibt diese in PrimalScript:

ERROR: Get-CimInstance : The term 'Get-CimInstance' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again At C:\Users\sieredzkian\Desktop\New folder\User_Launched_Application_3.ps1:166 char:31 + $freeRam = Get-CimInstance <<<< -ClassName win32_operatingsystem | Select-Object -expand FreePhysicalMemory + CategoryInfo : ObjectNotFound: (Get-CimInstance:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

Während in Powershell es läuft ...

Warum kann es nicht die Cmdlets finden? Es tut dies auch für ein paar andere Cmdlets wie Out-GridView

EDIT: Mein ursprüngliches Problem wurde durch die Verwendung von primalscript 2011 verursacht, wo nur Powershell V2 unterstützt wurde. Ich konnte das beheben, indem ich die Testversion von primalscript 2016 installierte. Dies ermöglichte mir, powershell V3 zu verwenden, wie ich es in der ISE verwendete.

+0

Haben Sie eine Powershell-Versionspräferenz festgelegt? Primalscript (2016) sollte Code bis Powershell v5 kompilieren. – Martin

Antwort

1

Get-CimInstance erfordern Powershell Version 3 und später ... stellen Sie sicher, es in der Powershell-Version Menü

Serach for this menu

Eine weitere Option (falls Ihre Powershell Version 2 oder weniger) ist Get-WmiObject zu verwenden anstelle von Get-CimInstance sollte es so aussehen:

$freeRam = Get-WmiObject -ClassName win32_operatingsystem | Select-Object -expand FreePhysicalMemory 
+0

Ich kann v3 auf der UI aus irgendeinem Grund nicht auswählen – twantheswan

+0

also, wenn nicht später als v3, ändern Sie Ihr Skript zu Get-WmiObject, wie erklärt. – Avshalom

+0

Ich konnte den Cache leeren und das Programm neu starten. Die v3-Schaltfläche wurde anklickbar. Danke für Ihre Hilfe! – twantheswan