Szukaj…


Uruchom PowerShell z plikami tymczasowymi

Zostało to wielokrotnie wspominane w innych tematach hybrydowych . Tradycyjną, ale łatwą metodą uruchamiania programu PowerShell jest:

  • echo skryptu Powershell w skrypcie tymczasowym
  • Uruchom skrypt tymczasowy
  • Opcjonalnie usuń skrypt tymczasowy

To jest przykładowy skrypt.

@echo off
echo powershell-command>Temp.ps1
echo another line>>Temp.ps1
    rem echo the script into a temporary file

powershell -File Temp.ps1
    rem execute the temporary script

del Temp.ps1
    rem Optionally remove the temporary script

Powyższa metoda wymaga mnóstwa instrukcji echo , jeśli wymagany jest długi skrypt, oto lepsza metoda sugerowana przez @Aacini

@echo off
setlocal

    rem Get the number of the "<resource>" line
for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a"

    rem Skip such number of lines and show the rest of this file
(for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > Temp.ps1

powershell -File Temp.ps1
del /f /s /q Temp.ps1

goto :EOF

<resource>
PS
Powershell script

Użyj polecenia POWERSHELL, aby wykonać 1-wierszowe polecenie PowerShell

Za pomocą polecenia POWERSHELL możemy wykonać polecenie 1-wierszowe bezpośrednio ze skryptu wsadowego, bez żadnego pliku tymczasowego.


Oto składnia.

powershell.exe -Command <yourPowershellCommandHere>

Możesz również dołączyć inne flagi, takie jak -Nologo aby poprawić rzeczywisty wynik.

Powershell / pakiet hybrydowy bez plików tymczasowych

Takie podejście zaproponowało rojo użytkownika stackoverflow, które może również obsługiwać argumenty wiersza poleceń:

<# : batch portion
@echo off & setlocal

(for %%I in ("%~f0";%*) do @echo(%%~I) | ^
powershell -noprofile "$argv = $input | ?{$_}; iex (${%~f0} | out-string)"

goto :EOF
: end batch / begin powershell #>

"Result:"
$argv | %{ "`$argv[{0}]: $_" -f $i++ }

o nazwie tak:

psbatch.bat arg1 „To jest arg2” arg3

będzie produkować:

Result:
$argv[0]: C:\Users\rojo\Desktop\test.bat
$argv[1]: arg1
$argv[2]: This is arg2
$argv[3]: arg3


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow