Попытка использования командного файла в одном месте и вызов сценария powershell повышен

Я пытаюсь использовать приведенный ниже пакетный файл, который находит компакт-диск на компьютере, и вы хотите запустить скрипт powershell с компакт-диска и запустить в этой папке. Вот командный файл.

@echo off setlocal for /f "skip=1 tokens=1,2" %%i in ('wmic logicaldisk get caption^, drivetype') do (if [%%j]==[5] pushd %%i) cd WIN2k8\Non-Supressed\ start powershell -NoLogo -NoProfile -WindowStyle Maximized -NoExit -ExecutionPolicy Bypass -File .\PatchTest.ps1 echo Press Space Bar to continue pause endlocal 

Попытка использования командного файла в одном месте и вызов сценария powershell повышен

Вы можете выполнить то, что вы пытаетесь сделать с приведенным ниже синтаксисом, из того, что я тестировал и подтвердил с моей стороны. Я включил некоторые методы в вашу логику с тем, как я это делал с другими решениями PowerShell и Batch file, как вы объясняли в прошлом.

Я WIN2k8\Non-Supressed путь WIN2k8\Non-Supressed после переменной %~j поэтому цикл FOR /F будет использовать полный путь для установки переменной ( FPath ), чтобы позже использовать эту переменную в качестве полного пути сценария PowerShell, который Выполняются. Нет необходимости использовать команду PUSHD для этого метода.

Я также использую явный CD /D в каталоге Windows PowerShell app, вызываю PowerShell оттуда, а затем передаю ему аргументы, команды, переключатели и т. Д. – с полным путем сценария PowerShell (т.е. -ExecutionPolicy Bypass -Command "& '%FPath%\PatchTest.ps1'" ).

Пример сценария партии

 @ECHO ON SETLOCAL FOR /F "SKIP=1 TOKENS=1,2" %%i IN ('"wmic logicaldisk get caption, drivetype"') DO (IF [%%~j]==[5] SET FPath="%%~i\WIN2k8\Non-Supressed") SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%FPath%\PatchTest.ps1'" ECHO Press Space Bar to continue PAUSE ENDLOCAL 

Дополнительные ресурсы

  • ExecutionPolicy
  • CD
  • Задавать

После прокомментированного сценария .bat необходимо проверить все CD-диски на машине и :

Если носитель вставлен, а вставленный носитель содержит ожидаемую папку, то запустите сеанс повышенной сессии powershell, измените местоположение в этой папке и запустите указанный скрипт из него:

 @ECHO OFF SETLOCAL EnableExtensions DisableDelayedExpansion rem set initial values set "_folder=WIN2k8\Non-Supressed" set "_folder=content\recipes\cze_CZE" my testing value SET "_fullPath=" necessary FOR /F "SKIP=1 TOKENS=1-5" %%i IN (' "wmic logicaldisk get Caption, DriveType, Size, SystemName, VolumeSerialNumber" ') DO ( rem next test: is CD/DVD? could be omitted using `wmic … Where "DriveType=5" get …` IF [%%~j]==[5] ( rem next test: medium inserted? IF NOT [%%~m]==[] ( rem next test: right medium inserted? if exist "%%~i\%_folder%\" ( SET "_fullPath=%%~i\%_folder%" ) ) ) ) rem set auxiliary values to keep final `PowerShell` line in a reasonable length set "_elevate=Start-Process PowerShell -Verb RunAs" set "_torun=.\PatchTest.ps1" set "_torun=Get-Childitem 81*;pause" my testing value set "_arguments='Push-Location -literalPath ''"%_fullPath%"'';%_torun%'" IF defined _fullPath ( PowerShell %_elevate% -ArgumentList %_arguments% ) pause 

Эта партия будет поднимать себя (если необходимо) перед оценкой диска cd, а затем запускает скрипт powershell.

 @echo off setlocal ::Check if elevated net file 1>nul 2>&1 || (powershell -ex ByPass -Command ^ "Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c %~f0 %*'" goto :eof ) :: Put code here that needs elevation Set "CDPath=\WIN2k8\Non-Supressed\" Set "Script=PatchTest.ps1" for /f %%i in ( 'wmic logicaldisk where "DriveType=5" get caption^, drivetype^|findstr ":"' ) do IF exist "%%i%CDPath%Script%" Set "CDPath=%%i%CDPath%" & Goto :Found Echo Can't locate CD drive / script Pause Goto :Eof :Found PushD "%CDPath%" start powershell -NoLogo -NoProfile -WindowStyle Maximized -NoExit -Ex Bypass -File .\PatchTest.ps1 echo Press Space Bar to continue pause endlocal 
  • Как переименовать некоторые файлы в соответствии с их меткой времени
  • Powershell, поставщик файловой системы, фильтрация Get-ChildItem ... где находятся официальные документы?
  • Как отфильтровать строку с подстановочным знаком и вывести ее в другой текстовый файл с модификацией?
  • Как написать значение одного свойства объекта?
  • Есть ли способ сделать работу сценария powershell, дважды щелкнув файл .ps1?
  • Удаление файлов старше 15 дней с помощью PowerShell
  • Windows Powershell: Выполнение команд через контекстное меню?
  • Прокрутка файлов в каталоге с помощью PowerShell
  • Может ли терминал PowerShell по умолчанию хранить историю команд?
  • Где я могу найти все COM-объекты, которые могут быть созданы в Powershell?
  • Печать символов Unicode в приглашении PowerShell
  • Interesting Posts

    Если кто-то не заботится о защите секретного ключа gpg, он все же столь же безопасен, как и gpg –симметричный?

    Как разместить две легенды самостоятельно в ggplot

    Как преобразовать строку в формат Indian Money?

    Powerpoint 2007, связанная с внешним контентом

    Как отредактировать файл журнала ddrescue для возобновления в определенном месте?

    Google Play на Android 4.0 эмулятор

    Разница между типом данных с плавающей запятой и десятичной точкой

    Android-стиль слайдов Android

    Получить тег реферера Google Analytics Android

    Почему резка ячейки в Excel не работает должным образом?

    Показать Загрузка анимации во время загрузки данных в другой stream

    C # listView, как добавить элементы в столбцы 2, 3 и 4 и т. Д.?

    Живая аудиозапись и воспроизведение в Android и обработка обратного вызова и обратного вызова

    Координаты текстуры OpenGL в пиксельном пространстве

    Как предоставить удаленный рабочий стол пользователю прямо в Windows Server 2008?

    Давайте будем гением компьютера.