Ist meine PowerShell-Ausführungsumgebung subtil beschädigt?
Ich erwarte keine Antwort, aber ich hoffe auf eine Richtung.
Manchmal scheint die PowerShell ISE einfach nur komisch zu sein. Die Komik scheint aus dem Nichts zu kommen. Ich habe keinen Weg gefunden, das Verhalten zu reproduzieren.
Vor drei Tagen habe ich Code geschrieben, der auf dem Laufwerk CERT: \ ausgeführt wurde, und Intellisense zeigte mir die Parameter für den Dateisystemanbieter ( -File
und -Directory
) anstelle des Zertifikatsanbieters ( -ExpiringInDays
) an.
Heute hat dieser Code eine Ausnahme ausgelöst.
Invoke-Command -ComputerName OneServer -Credential $admin ` -ScriptBlock
Das System kann das angegebene Gerät oder die angegebene Datei nicht öffnen + CategoryInfo: NotSpecified: (:) [Get-ChildItem], Win32Exception + FullyQualifiedErrorId: System.ComponentModel.Win32Exception, Microsoft.PowerShell.Commands.GetChildItemCommand + PSComputername: Server
Das Ausführen dieses Ausschnitts auf meinem lokalen Computer in derselben PowerShell-Sitzung hat dieselbe Ausnahme ausgelöst.
Get-ChildItem -Path CERT:\ -Recurse -ExpiringInDays 366
Gleiche Ausnahme CERT:
, CERT:\
und CERT:\*
.
Wenn ich tiefer in ein Verzeichnis ging -Path CERT:\LocalMachine
, lief es ohne Ausnahme, aber es wurden Zertifikate zurückgegeben, die mehrere Jahre (mehr als 366 Tage) ablaufen.
Ich wechselte zu einer anderen PowerShell-Sitzung, in die diese beiden Ausschnitte eingefügt wurden, und beide liefen gut. Die Variable $admin
wird in beiden Sitzungen korrekt festgelegt. Dies scheint mir darauf hinzuweisen, dass in der Ausführungsumgebung etwas schief läuft. Unmittelbar darüber haben Invoke-Command und ein lokaler Befehl den gleichen Fehler ausgelöst. Das verstehe ich nicht
In den PowerShell-Ereignisprotokollen (unter Microsoft / Windows / PowerShell / Operational) wird für diese Ausnahme kein Fehler angezeigt. Sie zeigen jedoch den Fehler "Zugriff verweigert" im Zusammenhang mit Invoke-Command.
WSMan hat einen Fehler mit Fehlercode gemeldet: 5. Fehlermeldung: Das Herstellen einer Verbindung zum Remote-Server-Einerserver ist mit der folgenden Fehlermeldung fehlgeschlagen: Zugriff wird verweigert.
Ich denke, das hängt mit der Ausführungsumgebung zusammen. Das Ausführen von identischem Code in einer anderen PowerShell-Sitzung hat gut funktioniert.
Andere Dinge, die relevant sein könnten
- Ich werde heruntergefahren, abgemeldet oder erst dann neu gestartet, wenn Windows mich dazu zwingt.
- Ich habe normalerweise mehr als ein PowerShell ISE-Fenster geöffnet. Sie könnten für Tage offen bleiben. Während dieser Zeit scheinen sie gut zu funktionieren. (Aber würde ich es wirklich wissen?)
- Manchmal schlägt Code ohne Variablen fehl oder erzeugt eine seltsame Ausgabe in einem Fenster, funktioniert jedoch in einem anderen Fenster wie erwartet. Ich merke nicht immer, dass die Ausgabe seltsam ist. (PowerShell sagt mir, dass keine Zertifikate vor 2020 ablaufen. Ist das richtig oder ist es seltsam? Ich weiß es nicht immer.)
- Unheimliches IntelliSense-Verhalten (oben).
- Jedes Mal, wenn ich die ISE öffne, laufen die Pester-Unit-Tests gegen meinen gesamten Produktionscode. Hin und wieder wird eine Reihe von ihnen versagen. Wenn ich sie manuell erneut starte, sind sie erfolgreich. Öffnen Sie ein neues ISE-Fenster.
Wie isoliere ich diese Art von Problem?
PS> $ PSVersionTable Name Wert ---- ----- PSVersion 5.1.15063.413 PSEdition Desktop PSCompatibleVersions BuildVersion 10.0.15063.413 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 Serialisierungsversion 1.1.0.
Remote-Server sind ähnlich: Automatisierte Jobs führen jeden Tag fehlerfrei Invoke-Command-Skripts auf allen Produktionsservern aus. Wahrscheinlich. Könnte sein.
0 Antworten auf die Frage
Verwandte Probleme
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
5
Deaktivieren des Pieptons im cmd-Fenster
-
3
Powershell-Ping auf unbestimmte Zeit
-
5
Tastenkombination zum Einfügen in die Windows-Eingabeaufforderung
-
5
Welche Vorteile könnte ein durchschnittlicher Geek aus Powershell ziehen?
-
1
Powershell: Führt eine Operation für alle Dateien in einem Verzeichnis durch (foreach)
-
1
PowerShell / CMD-Markierung, um in Vista mit der rechten Maustaste zu klicken
-
3
Was ist Windows PowerShell?
-
5
Wie macht man ein Powershell (oder ein anderes) Skript, um die Bildschirmauflösung zu ändern?
-
5
Rufen Sie den aktuellen UNC-Pfad von einem lokalen Pfad in Powershell ab