Best command prompt and powershell difference New

You are viewing this post: Best command prompt and powershell difference New

Siehe Thema command prompt and powershell difference


How to Open an Explorer Window from the Command Prompt’s … New Update

05/07/2017 · Note: If you see PowerShell instead of Command Prompt on the Power Users menu, that’s a switch that came about with the Creators Update for Windows 10.It’s very easy to switch back to showing the Command Prompt on the Power Users menu if you want, or you can give PowerShell a try. You can do pretty much everything in PowerShell that you can do in …

+ Details hier sehen

Read more

Es gibt alle möglichen Möglichkeiten, ein Eingabeaufforderungsfenster über den Datei-Explorer zu öffnen – und Sie können sogar Befehle direkt in der Adressleiste des Datei-Explorers ausführen – aber wussten Sie, dass es genauso einfach ist, ein Datei-Explorer-Fenster über die Eingabeaufforderung zu öffnen? RELATED: 10 Ways to Open the Command Prompt in Windows 10

Angenommen, Sie befinden sich in der Eingabeaufforderung, arbeiten mit Dateien und Ordnern und möchten im Explorer darauf zugreifen

Anstatt manuell zu ihnen zu navigieren, können Sie mit einem einfachen Befehl dorthin gelangen

Fahren Sie fort und öffnen Sie ein Eingabeaufforderungsfenster, indem Sie Windows+X drücken und „Eingabeaufforderung“ aus dem Menü „Hauptbenutzer“ auswählen das Creators Update für Windows 10

Es ist sehr einfach, wieder zur Anzeige der Eingabeaufforderung im Menü „Hauptbenutzer“ zu wechseln, wenn Sie möchten, oder Sie können PowerShell ausprobieren

Sie können in PowerShell so ziemlich alles tun, was Sie in der Eingabeaufforderung tun können, sowie viele andere nützliche Dinge

Wir werden mit dem Startbefehl arbeiten, also beginnen wir mit einem einfachen Befehl, um ein Datei-Explorer-Fenster für den aktuellen Ordner in der Eingabeaufforderung zu öffnen

Geben Sie an der Eingabeaufforderung einfach Folgendes ein:

start.

Der Punkt wird in der Eingabeaufforderung als Abkürzung für den aktuellen Ordner verwendet, sodass der aktuelle Ordner im Datei-Explorer geöffnet wird

Sie können auch einen doppelten Punkt verwenden, um den übergeordneten Ordner des aktuellen Ordners zu öffnen

Angenommen, Sie haben sich in der Eingabeaufforderung gerade einen Ordner mit dem Namen „Berichte“ angesehen, der sich in einem Verzeichnis mit dem Namen „Projekt A“ befindet

Sie können den folgenden Befehl eingeben, um den Ordner „Projekt A“ im Datei-Explorer zu öffnen, ohne den Ordner „Berichte“ in der Eingabeaufforderung zu verlassen:

start. .

Und mit einem Befehl öffnet sich der Ordner „Projekt A“ im Datei-Explorer

Sie können auch auf dieser Abkürzung mit dem doppelten Punkt aufbauen, indem Sie am Ende einen relativen Pfad hinzufügen

Lassen Sie uns unser Beispiel fortsetzen, indem wir annehmen, dass es auch einen Ordner namens „Sales“ in diesem Ordner „Project A“ gibt

Während Sie sich noch im Ordner „Berichte“ befinden, können Sie den folgenden Befehl eingeben, um den Ordner „Verkäufe“ im Datei-Explorer zu öffnen, ohne den Ordner „Berichte“ in der Eingabeaufforderung zu verlassen.

start. .\Sales

Natürlich können Sie auch den vollständigen Pfad eingeben, um einen beliebigen Ordner auf Ihrem PC zu öffnen:

c:\windows\system32 starten

VERWANDT: So öffnen Sie versteckte Systemordner mit dem Shell-Befehl von Windows

Sie können den Befehl auch zusammen mit einer der integrierten Windows-Umgebungsvariablen oder den neueren Shell:-Operatorstilen verwenden

So könnten Sie beispielsweise den folgenden Befehl eingeben, um den AppData-Ordner des aktuellen Benutzers zu öffnen:

starte %APPDATA%

Oder ein Befehl wie dieser, um den Windows-Startordner zu öffnen:

starthell: start

Anzeige

Windows Powershell vs Command Prompt: What’s The Difference Anyway? New Update

Video ansehen

Weitere Informationen zum Thema command prompt and powershell difference

command prompt and powershell difference Einige Bilder im Thema

 New  Windows Powershell vs Command Prompt: What's The Difference Anyway?
Windows Powershell vs Command Prompt: What’s The Difference Anyway? Update

How do I capture the output into a … – Stack Overflow New

[1] As of PowerShell 7.1, PowerShell knows only strings when communicating with external programs. There is generally no concept of raw byte data in a PowerShell pipeline. If you want raw byte data returned from an external program, you must shell out to cmd.exe /c (Windows) or sh -c (Unix), save to a file there, then read that file in PowerShell.

+ ausführliche Artikel hier sehen

Read more

Hinweis: Der Befehl in der Frage verwendet Start-Process , wodurch die direkte Erfassung der Ausgabe des Zielprogramms verhindert wird

Verwenden Sie im Allgemeinen nicht Start-Process, um Konsolenanwendungen synchron auszuführen – rufen Sie sie einfach direkt auf, wie in jeder Shell

Dadurch bleibt die Anwendung mit den Standard-Streams der aufrufenden Konsole verbunden, sodass ihre Ausgabe durch einfache Zuweisung $output = netdom. .

erfasst werden kann, wie unten beschrieben

Grundsätzlich funktioniert die Erfassung der Ausgabe von externen Programmen genauso wie bei PowerShell-nativ Befehle (Sie möchten vielleicht eine Auffrischung darüber, wie externe Programme ausgeführt werden; ist ein Platzhalter für jeden gültigen Befehl unten):

# WICHTIG: # ist ein *Platzhalter* für jeden gültigen Befehl; z.B.: # $cmdOutput = Get-Date # $cmdOutput = attrib.exe +R readonly.txt $cmdOutput = # erfasst den Erfolgsstrom / die stdout-Ausgabe des Befehls

Beachten Sie, dass $cmdOutput ein Array von Objekten empfängt, wenn mehr als 1 Ausgabeobjekt erzeugt, was im Fall eines externen Programms ein String[1]-Array bedeutet, das die Ausgabezeilen des Programms enthält

Wenn Sie sicherstellen möchten, dass die Das Ergebnis ist immer ein Array – selbst wenn nur ein Objekt ausgegeben wird, schränken Sie die Variable als Array ein oder packen Sie den Befehl in @() , den Array-Unterausdrucksoperator):

[array] $cmdOutput = # oder: $cmdOutput = @()

Wenn Sie hingegen möchten, dass $cmdOutput immer einen einzelnen – möglicherweise mehrzeiligen – String erhält, verwenden Sie Out-String , beachten Sie jedoch, dass immer ein abschließender Zeilenumbruch hinzugefügt wird (GitHub Issue #14444 behandelt dieses problematische Verhalten):

# Hinweis: Fügt einen abschließenden Zeilenumbruch hinzu

$cmdOutput = | aus Saite

Bei Aufrufen externer Programme – die in PowerShell per Definition immer nur Strings zurückgeben[1] – können Sie das umgehen, indem Sie stattdessen den Operator -join verwenden:

# KEIN abschließender Zeilenumbruch

$cmdOutput = () -join “`n”

Hinweis: Der Einfachheit halber wird oben “`n” verwendet, um Zeilenumbrüche im Unix-Stil zu erstellen, die nur LF enthalten, was PowerShell gerne auf allen Plattformen akzeptiert

Wenn Sie plattformgerechte Zeilenumbrüche benötigen (CRLF unter Windows, LF unter Unix), verwenden Sie stattdessen [Environment]::NewLine.

Um die Ausgabe in einer Variablen zu erfassen und auf dem Bildschirm auszugeben:

| Tee-Object -Variable cmdOutput # Beachten Sie, dass dem Variablennamen NICHT das Präfix $ vorangestellt ist

Wenn ein Cmdlet oder eine erweiterte Funktion ist, können Sie allgemeine Parameter verwenden

-OutVariable / -ov :

-OutVariable cmdOutput # Nur Cmdlets und erweiterte Funktionen

Beachten Sie, dass bei -OutVariable anders als in den anderen Szenarien $cmdOutput immer eine Collection ist, auch wenn nur ein Objekt ausgegeben wird

Insbesondere wird eine Instanz des Array-ähnlichen Typs [System.Collections.ArrayList] zurückgegeben

Eine Diskussion dieser Diskrepanz finden Sie in diesem GitHub-Problem

Um die Ausgabe mehrerer Befehle zu erfassen, verwenden Sie entweder einen Unterausdruck ( $(.

.) ) oder einen Skriptblock ( {. .

} ) mit & oder aufrufen

:

$cmdOutput = $(;. ..) # Teilausdruck $cmdOutput = & {;. ..} # Skriptblock mit & – erstellt untergeordneten Geltungsbereich für vars

$cmdAusgabe =

{;. ..} # Skriptblock mit

– kein untergeordneter Bereich

Beachten Sie, dass die allgemeine Notwendigkeit, einem einzelnen Befehl, dessen Name/Pfad in Anführungszeichen steht, ein & (den Aufrufoperator) voranzustellen – z gilt für PowerShell-Skripts), ist jedoch eine Syntaxanforderung: PowerShell analysiert eine Anweisung, die mit einer Zeichenfolge in Anführungszeichen beginnt, standardmäßig im Ausdrucksmodus, während der Argumentmodus zum Aufrufen von Befehlen (Cmdlets, externe Programme, Funktionen, Aliase) erforderlich ist & stellt sicher.

Der Hauptunterschied zwischen $(…) und & {. .

} /

{. .

} ist, dass Ersteres alle Eingaben im Speicher sammelt, bevor es als Ganzes zurückgegeben wird, während Letzteres die Ausgabe streamt, was für eine Pipeline-Verarbeitung nacheinander geeignet ist

Umleitungen funktionieren im Grunde genommen auch gleich (aber siehe Vorbehalte unter):

$cmdOutput = 2>&1 # Fehlerstrom (2) auf Erfolgsstrom (1) umleiten

Bei externen Befehlen funktioniert jedoch Folgendes eher wie erwartet:

$cmdOutput = cmd /c ‘2>&1’ # cmd.exe die Umleitung übernehmen lassen – siehe unten.

Spezielle Überlegungen zu externen Programmen:

Da externe Programme außerhalb des Typsystems von PowerShell operieren, geben sie immer nur Strings über ihren Erfolgsstrom (stdout) zurück; Ebenso sendet PowerShell immer nur Strings über die Pipeline an externe Programme

[1] Probleme mit der Zeichencodierung können daher auftreten: Beim Senden von Daten über die Pipeline an externe Programme verwendet PowerShell die in der Preference-Variable $OutVariable gespeicherte Codierung; die in Windows PowerShell standardmäßig auf ASCII(!) und in PowerShell [Core] auf UTF-8 eingestellt ist

Beim Empfangen von Daten von einem externen Programm verwendet PowerShell die in [Console]::OutputEncoding gespeicherte Codierung, um die Daten zu decodieren, die in beiden PowerShell-Editionen standardmäßig die aktive OEM-Codepage des Systems verwendet

Weitere Informationen finden Sie in dieser Antwort

Diese Antwort behandelt die Windows 10-Funktion, die sich noch in der Beta befindet (zum Zeitpunkt dieses Schreibens), mit der Sie UTF-8 systemweit sowohl als ANSI- als auch als OEM-Codepage festlegen können

Wenn die Ausgabe mehr als eine Zeile enthält, PowerShell spaltet es standardmäßig in ein Array von Strings auf

Genauer gesagt werden die Ausgabezeilen in einem Array vom Typ [System.Object[]] gespeichert, dessen Elemente Zeichenfolgen sind ( [System.String] )

Wenn Sie möchten, dass die Ausgabe eine einzelne, möglicherweise mehrzeilige Zeichenfolge ist, verwenden Sie der Operator -join (Sie können alternativ eine Pipeline an Out-String leiten, aber das fügt ausnahmslos einen abschließenden Zeilenumbruch hinzu):

$cmdOutput = () -join [Environment]::NewLine

Das Zusammenführen von stderr in stdout mit 2>&1 , um es auch als Teil des Erfolgsstroms zu erfassen, ist mit Einschränkungen verbunden : Um dies an der Quelle zu tun, lassen Sie cmd.exe die Umleitung behandeln, indem Sie die folgenden Redewendungen verwenden (funktioniert analog mit sh auf Unix-ähnlichen Plattformen):

$cmdOutput = cmd /c ‘2>&1’ # *Array* von Strings (normalerweise)

$cmdOutput = (cmd /c ‘2>&1’) -join “`r`n” # einzelne Zeichenfolge cmd /c ruft cmd.exe mit dem Befehl auf und wird beendet, nachdem beendet wurde

Beachten Sie die einfachen Anführungszeichen um 2>&1 , die sicherstellen, dass die Umleitung an cmd.exe übergeben und nicht von PowerShell interpretiert wird

Beachten Sie, dass die Einbeziehung von cmd.exe bedeutet, dass seine Regeln zum Escapezeichen und Erweitern von Umgebungsvariablen standardmäßig zusätzlich zu den eigenen Anforderungen von PowerShell ins Spiel kommen

In PS v3+ können Sie den speziellen Parameter –% (das sogenannte Stop-Parsing-Symbol) verwenden, um die Interpretation der verbleibenden Parameter durch PowerShell zu deaktivieren, mit Ausnahme von Referenzen auf Umgebungsvariablen im Stil von cmd.exe wie %PATH%

Beachten Sie, dass Sie, da Sie bei diesem Ansatz stdout und stderr an der Quelle zusammenführen, in PowerShell nicht zwischen von stdout stammenden und von stderr stammenden Zeilen unterscheiden können

Wenn Sie diese Unterscheidung benötigen, verwenden Sie die PowerShell-eigene 2>&1-Umleitung – siehe unten

Verwenden Sie die 2>&1-Umleitung von PowerShell, um zu erfahren, welche Zeilen aus welchem ​​​​Stream stammen: Die Stderr-Ausgabe wird als Fehlerdatensätze ( [System.Management.Automation.ErrorRecord] ) erfasst, nicht als Zeichenfolgen, sodass das Ausgabearray möglicherweise eine Mischung aus Zeichenfolgen enthält (jede Zeichenfolge die eine stdout-Zeile darstellen) und Fehleraufzeichnungen (jede Aufzeichnung repräsentiert eine stderr-Zeile)

Beachten Sie, dass, wie von 2>&1 angefordert, sowohl die Zeichenfolgen als auch die Fehlerdatensätze über den Erfolgsausgabestrom von PowerShell empfangen werden)

Hinweis: Folgendes gilt nur für Windows PowerShell – diese Probleme wurden in PowerShell [Core] v6+ behoben, obwohl die unten gezeigte Filtertechnik nach Objekttyp ( $_ -is [System.Management.Automation.ErrorRecord] ) ebenfalls nützlich sein kann dort

In der Konsole werden die Fehlerdatensätze rot gedruckt, und der erste erzeugt standardmäßig eine mehrzeilige Anzeige im gleichen Format, das der nicht beendende Fehler eines Cmdlets anzeigen würde; Nachfolgende Fehleraufzeichnungen werden ebenfalls rot gedruckt, aber nur ihre Fehlermeldung in einer einzigen Zeile

Bei der Ausgabe an die Konsole kommen die Strings normalerweise zuerst im Ausgabe-Array, gefolgt von den Fehleraufzeichnungen (zumindest bei einer Reihe von stdout/stderr-Zeilen, die “gleichzeitig” ausgegeben werden), aber glücklicherweise, wenn Sie die Ausgabe erfassen , es ist richtig verschachtelt , wobei die gleiche Ausgabereihenfolge verwendet wird, die Sie ohne 2>&1 erhalten würden ; Mit anderen Worten: Bei der Ausgabe an die Konsole spiegelt die erfasste Ausgabe NICHT die Reihenfolge wider, in der die Zeilen stdout und stderr vom externen Befehl generiert wurden

Wenn Sie die gesamte Ausgabe in einer einzigen Zeichenfolge mit Out-String erfassen, fügt PowerShell zusätzliche Zeilen hinzu, da die Zeichenfolgendarstellung eines Fehlerdatensatzes zusätzliche Informationen wie Ort ( At line:..

) und Kategorie ( + CategoryInfo.

); merkwürdigerweise gilt dies nur für den ersten Fehlereintrag

Um dieses Problem zu umgehen, wenden Sie die. ToString()-Methode auf jedes Ausgabeobjekt an, anstatt an Out-String : weiterzuleiten

$cmdOutput = 2>&1 | % { $_.ToString() } ;

in PS v3+ können Sie vereinfachen zu:

$cmdOutput = 2>&1 | %ToString

(Wenn die Ausgabe nicht erfasst wird, erzeugt dies als Bonus auch beim Drucken auf der Konsole eine ordnungsgemäß verschachtelte Ausgabe.) Alternativ können Sie die Fehlerdatensätze herausfiltern und sie mit Write-Error an den Fehlerstrom von PowerShell senden (als Bonus, wenn Die Ausgabe wird nicht erfasst, dies erzeugt eine ordnungsgemäß verschachtelte Ausgabe, selbst wenn auf die Konsole gedruckt wird)

$cmdOutput = 2>&1 | ForEach-Object { if ($_ -is [System.Management.Automation.ErrorRecord]) { Write-Error $_ } else { $_ } }

Eine Nebenbemerkung zur Übergabe von Argumenten ab PowerShell 7.1:

Das Übergeben von Argumenten an externe Programme ist in Bezug auf Argumente mit leeren Zeichenfolgen und Argumenten, die eingebettete “-Zeichen enthalten, unterbrochen

Außerdem werden die (nicht standardmäßigen) Anführungszeichen von ausführbaren Dateien wie msiexec.exe und Stapeldateien nicht berücksichtigt

Für erstere Problem, möglicherweise kommt ein Fix (obwohl der Fix auf Unix-ähnlichen Plattformen vollständig wäre), wie in dieser Antwort besprochen, in der auch alle aktuellen Probleme und Problemumgehungen aufgeführt sind.

Wenn die Installation eines Drittanbieter-Moduls eine Option ist, bietet die ie-Funktion aus dem Native-Modul (Install-Module Native) eine umfassende Lösung.

Difference between Command Prompt and Powershell in Windows 10 Update

Video unten ansehen

Weitere hilfreiche Informationen im Thema anzeigen command prompt and powershell difference

command prompt and powershell difference Einige Bilder im Thema

 Update  Difference between Command Prompt and Powershell in Windows 10
Difference between Command Prompt and Powershell in Windows 10 New Update

Weitere Informationen zum Thema anzeigen command prompt and powershell difference

Updating

Dies ist eine Suche zum Thema command prompt and powershell difference

Updating

Sie haben das Thema also beendet command prompt and powershell difference

Articles compiled by Musicsustain.com. See more articles in category: MMO

Leave a Comment