CMD-opdracht uitvoeren in PowerShell

Ik heb een aantal problemen met het uitvoeren van een PowerShell-opdracht. Het enige dat het doet, is een opdracht uitvoeren die zou worden uitgevoerd in een CMD-promptvenster.

Hier is het commando:

"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME

Ik heb het volgende geprobeerd zonder succes (ik heb veel herhalingen hiervan geprobeerd om er een te krijgen die werkt. De syntaxis is waarschijnlijk helemaal verknoeid):

$TEXT = $textbox.Text #$textbox is where the user enters the PC name.
$CMDCOMMAND = "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"
Start-Process '"$CMDCOMMAND" $TEXT'
#iex -Command ('"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"' $TEXT)

De opdracht opent het SCCM-venster voor externe verbinding naar de computer die de gebruiker in het tekstvak opgeeft.


Antwoord 1, autoriteit 100%

Probeer dit:

& "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME

Voor PowerShell is een tekenreeks “…” slechts een tekenreeks en PowerShell evalueert deze door deze naar het scherm te echoën. Om PowerShell de opdracht te laten uitvoeren waarvan de naam in een tekenreeks staat, gebruikt u de oproepoperator &.


Antwoord 2, autoriteit 55%

Om batchbestanden extern vanuit PowerShell uit te voeren of te converteren (vooral als u al uw geplande taakscripts met een certificaat wilt ondertekenen), maak ik gewoon een PowerShell-script, b.v. verwijderfolders.ps1.

Voer het volgende in het script in:

cmd.exe /c "rd /s /q C:\#TEMP\test1"
cmd.exe /c "rd /s /q C:\#TEMP\test2"
cmd.exe /c "rd /s /q C:\#TEMP\test3"

*Elke opdracht moet opnieuw op een nieuwe regel worden geplaatst met de naam cmd.exe.

Dit script kan nu worden ondertekend en uitgevoerd vanuit PowerShell, waarbij de opdrachten rechtstreeks naar de opdrachtprompt / cmdworden uitgevoerd.

Het is een veel veiligere manier dan batchbestanden uitvoeren!


Antwoord 3, autoriteit 9%

Een oplossing zou zijn om uw opdracht te pipevan PowerShell naar CMD. Als u de volgende opdracht uitvoert, wordt de opdracht notepad.exedoorgestuurd naar CMD, waardoor de toepassing Kladblok wordt geopend.

PS C:\> "notepad.exe" | cmd

Zodra de opdracht in CMD is uitgevoerd, keert u terug naar een PowerShell-prompt en kunt u doorgaan met het uitvoeren van uw PowerShell-script.


Bewerkingen

Het opstartbericht van CMD wordt weergegeven

Zoals mklement0aangeeft, is deze methode toont het opstartbericht van CMD. Als u de uitvoer met de bovenstaande methode naar een andere terminal zou kopiëren, wordt het opstartbericht mee gekopieerd.


Antwoord 4, autoriteit 2%

Voor degenen die deze informatie misschien nodig hebben:

Ik ben erachter gekomen dat je een commando dat in je PATHstaat zo goed als vanuit een PS-script kunt uitvoeren, en het zou moeten werken.

Soms moet u deze opdracht mogelijk vooraf starten met cmd.exe /c

Voorbeelden

Git aanroepen vanuit een PS-script

Ik moest een gitclient verpakt in chocoladey (voor degenen die kunnen Weet niet, het is een pakketmanager voor Windows) die massaal PS-scripts gebruikt.

Ik ontdekte dat, eenmaal gitin de PATH, opdrachten zoals

bevindt

$ca_bundle = git config --get http.sslCAInfo

Bewaar de locatie van gitcrtBestand in $ca_bundleVariabele.

Op zoek naar een app

Nog een voorbeeld dat een combinatie is van het huidige, dus post en dit, dus post is het gebruik van whereopdracht

$java_exe = cmd.exe /c where java

Bewaar de locatie van java.exebestand in $java_exevariabele.


Antwoord 5

U moet het CMDLET van de oproep-opdracht gebruiken om dit externe programma te starten. Normaal werkt het zonder inspanning.

Als u meer dan één opdracht nodig heeft, moet u de CMDLET van de oproep-expressie gebruiken met de -scriptblockOptie.

Other episodes