Выполнение файла EXE с использованием скрипта PowerShell с аргументами для GCDS - PullRequest
0 голосов
/ 26 февраля 2019

Я новичок в Windows и PowerShell на уровне администратора.У меня есть опыт работы с Linux, и я предпочитаю использовать Python, но мне сложно понимать среду Windows.В bash и Linux я привык запускать сценарии оболочки с помощью cronjobs, но в Windows у меня проблема с запуском этой команды в планировщике задач.Мне нужно иметь возможность запускать Google Cloud Directory Sync, чтобы наша AD синхронизировалась с Gsuite.Я написал командный файл, который работает, но я чувствую, что он немного устарел, чтобы использовать bat-файл

cd C:\Program Files\Google Apps Directory Sync\
sync-cmd.exe -a -o -c config.xml

, я думаю, это нужно запускать как скрипт PowerShell через планировщик задач, но я не знаюкогда начать.Я нашел это до сих пор, но я получаю ошибку, которую я не знаю, как интерпретировать.

Start-Process sync-cmd.exe -ArguementList "-a -o -c C:\Somepath\config.xml"

извините за новичок, спасибо заранее!Также для дополнительного ресурса здесь есть страница команд GCDS.

https://support.google.com/a/answer/6152425?hl=en

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Я обнаружил, что PowerShell очень похож на python и bash с переменными.Это выполняется как скрипт, который я затем присоединяю к планировщику задач.

$msbuild = "C:\Program Files\Google Apps Directory Sync\sync-cmd.exe"
$arguements = "-a -o -c config.xml"
start-Process -FilePath $msbuild $arguements
0 голосов
/ 27 февраля 2019

Ваша ошибка указывает на то, что Start-Process не имеет параметра с именем ArguementList.Вы можете использовать Get-Help, чтобы получить список доступных параметров.

Get-Help Start-Process -Parameter * | Select-Object Name

Действительно ArguementList недоступно, но ArgumentList доступно.В вашей команде просто есть опечатка.

Следующее должно работать нормально:

Start-Process sync-cmd.exe -ArgumentList "-a -o -c C:\Somepath\config.xml"
0 голосов
/ 26 февраля 2019

Вариант 1 - Запланируйте свой EXE напрямую через планировщик задач

Нет необходимости в powershell.Вы можете просто указать полный путь к EXE и аргументы, используя пользовательский интерфейс планировщика заданий Windows.Вы можете указать рабочую папку, используя параметр Начать с .

Вариант 2. Планирование сценария PowerShell с помощью планировщика задач

Я нахожу, используя -File опция PowerShell.exe очень полезна при планировании сценария PowerShell с помощью планировщика заданий.В этом случае я бы использовал командлет Start-Process и инкапсулировал бы аргументы в скрипте PowerShell.

Пример

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -File "c:\MyScript.ps1"

MSDN

https://docs.microsoft.com/en-us/powershell/scripting/components/console/powershell.exe-command-line-help?view=powershell-6

Синтаксис

PowerShell[.exe]
       [-Command { - | <script-block> [-args <arg-array>]
                     | <string> [<CommandParameters>] } ]
       [-EncodedCommand <Base64EncodedCommand>]
       [-ExecutionPolicy <ExecutionPolicy>]
       [-File <FilePath> [<Args>]]
       [-InputFormat {Text | XML}]
       [-Mta]
       [-NoExit]
       [-NoLogo]
       [-NonInteractive]
       [-NoProfile]
       [-OutputFormat {Text | XML}]
       [-PSConsoleFile <FilePath> | -Version <PowerShell version>]
       [-Sta]
       [-WindowStyle <style>]

PowerShell[.exe] -Help | -? | /?

Пример с моего ноутбука

enter image description here

Передача аргументов через Start-Process

Если вы используете Start-Process, вы можете передатьмассив аргументов через строку, разделенную запятыми.

PS C:\> Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%systemdrive%\program files`""

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

...