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 / cmd
worden 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.exe
doorgestuurd 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 PATH
staat 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 git
client verpakt in chocoladey (voor degenen die kunnen Weet niet, het is een pakketmanager voor Windows) die massaal PS-scripts gebruikt.
Ik ontdekte dat, eenmaal git
in de PATH
, opdrachten zoals
bevindt
$ca_bundle = git config --get http.sslCAInfo
Bewaar de locatie van git
crt
Bestand in $ca_bundle
Variabele.
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 where
opdracht
$java_exe = cmd.exe /c where java
Bewaar de locatie van java.exe
bestand in $java_exe
variabele.
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 -scriptblock
Optie.