bonnerjung
Goto Top

Powershell: CMD Kommando mit Parameter aufrufen

Hallo Admins,

ich möchte gerne einen CMD Befehl mit Parameter aus der Powershell aufrufen, finde aber so schnell keine gültige Syntax.

Bsp:

dir  
funktioniert
dir "C:\Windows"   
funktioniert

wie rufe ich aber z.B.
  dir /s 
auf ???

Danke, Danke

Content-Key: 318502

Url: https://administrator.de/contentid/318502

Printed on: April 20, 2024 at 04:04 o'clock

Mitglied: 131223
131223 Oct 20, 2016 updated at 07:17:46 (UTC)
Goto Top
dir "c:\windows" -Recurse  
"dir" ist in der Powershell nur ein Alias für Get-ChildItem! Du kannst also genauso
gci "c:\windows" -Recurse  
oder
ls "c:\windows" -Recurse  
oder
Get-ChildItem "c:\windows" -Recurse  
schreiben.

Die Hilfe sagts dir!
Get-Help Get-ChildItem -full

Will man wirklich native Batch Befehle wie "dir" verwenden, was man im obigen Fall so eigentlich überhaupt nicht mehr macht, geht das so
start-process "cmd" -Argumentlist "/c dir /s" -NoNewWindow -wait  


Danke, Danke
Bitte, Bitte.
Member: AnkhMorpork
AnkhMorpork Oct 20, 2016 updated at 07:18:20 (UTC)
Goto Top
Alternativ kannst du dir eine cmd in der Powershell-Konsole öffnen.
Einfach cmd eingeben (und Text lesen).

Aber die cmd kann nichts, was die Powershell nicht auch könnte.

Gruß

Ankh

<Nachtrag> Mit Exit die cmd wieder schließen </Nachtrag>
Member: bonnerjung
bonnerjung Oct 20, 2016 at 15:03:29 (UTC)
Goto Top
Hallo, Danke für die Antwort!

aber so richtig hilft mir das nicht.

Sorry für das Missverständnis, aber das DIR-Beispiel war ein Beispiel.

Deine Lösung öffnet ja ein neues CMD-Fenster. Ich würde die Ausgabe aber gerne in der PowerShell weiterverarbeiten.

Um bei dem Beispiel DIR zu bleiben, weils so schön einfach ist:

mit
dir | Select-Object Name
erhalte ich als Pipe die Datei/Verzeichnisnahmen.
kann dann z.B. mit
dir | where-object {$_.Name -Like "Intel"}  
selektieren und per PowerShell die Sache weiterverarbeiten.

Ich weiß aber nicht, wie ich Parameter von DIR syntaktisch übergebe.

Also, nach dem Motto
dir /s | Select-Object Name
, um z.B. auch die Unterverzeichnisse aufzulisten.

Konkret, (und da wären wir bei dem Tip von AnkhMorpork, der mir da sicher weiterhelfen kann), suche ich einen äquivalenten Befehl für "Mountvol".
Ich habe in der Powershell nichts gefunden, was mir die Volumenamen ausgibt und womit ich Bereitstellungspunkte löschen/wiederherstellen kann.

Noch konkreter: Ich möchte anhand der eindeutigen Volumenamen den Bereitstellungspunkt löschen und neu vergeben.
Nach einer Aktion dann wieder löschen.

Da ich (siehe oben) einen PowerShell-Befehl nicht gefunden habe, würde ich gerne Mountvol benutzen.

Noch, noch konktreter:

5 St. USB Sticks. Alle haben einen eindeutigen Volumename wie z.B. \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\, \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a5}\ usw.

mit
Mountvol \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\ /D
kann ich den Laufwerksbuchstaben löschen und mit
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\
den Laufwerksbuchstaben X: zuweisen.
Nach Backup Job auf X: kann ich dann mit
Mountvol \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\ /D
den Laufwerksbuchstaben wieder löschen, um den Stick vor unbeabsichtigtem/unberechtigtem Zugriff zu schützen.

Ich kann natürlich folgendes in einer Batch machen:
Mountvol \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a1}\ /D
Mountvol \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a2}\ /D
Mountvol \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a3}\ /D
Mountvol \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\ /D
u.s.w.

und danach (einen wirds schon treffen, wenn nur ein Stick gesteckt ist)
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a1}\
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a2}\
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a3}\
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\
u.s.w.

Möchte es aber eigentlich eleganter/flexibler mit PowerShell lösen.

Danke, danke, danke!
Member: bonnerjung
bonnerjung Oct 20, 2016 at 15:08:08 (UTC)
Goto Top
Hatte ich jetzt ganz vergessen, nach dem Roman:

Ich möchte einfach nur
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\
in der Powershell ausführen!
Wie geht das???
Mitglied: 131223
131223 Oct 20, 2016 at 15:10:05 (UTC)
Goto Top
Sorry du hast es immer noch nicht verstanden, les meinen Post nochmal ganz genau !!! "Dir" ist in der Powershell nur ein Alias für Get-Childitem, willst du also alle Dateien unterhalb eines Ordners ausgeben musst du den -Recurse Parameter benutzen.
Das "dir" aus dem Batchinterpreter gibts in der Powershell so nicht.
Mitglied: 131223
Solution 131223 Oct 20, 2016 updated at 15:16:09 (UTC)
Goto Top
Zitat von @bonnerjung:
Ich möchte einfach nur
Mountvol X: \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\
in der Powershell ausführen!
Wie geht das???
Du brauchst Anführungszeichen um jeden Parameter der Sonderzeichen wie z.B. den Bindestrich(-) enthält. Da Powershell sonst denkt es kommt ein neuer Parameter!
Mountvol "X:" "\\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\"  

P.s. Dein Fragezeichen klemmt.
Member: bonnerjung
bonnerjung Oct 20, 2016 at 16:08:19 (UTC)
Goto Top
Es ist schon fast zu einfach um wahr zu sein.
Tatsächlich habe ich keine Antwort per Google gefunden und immer mit dir, wie z.B. dir "/s" ausprobiert.
Mein "u" klemmt, Suuuper

Das Beispiel oben war natürlich falsch:

Richtig: Wenn z.B. der Stick \\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\ G: ist, aber X: sein soll.

mountvol "G:" "/D"  
mountvol  "X:" "\\?\Volume{97f2c54c-95f8-11e6-84bd-44444e7387a4}\"  
und wieder rausschmeißen mit
mountvol "X:" "/D"  

Danke
Mitglied: 131223
131223 Oct 20, 2016 at 16:41:06 (UTC)
Goto Top
Nicht verzagen die Sacknase fragen :-P