我是管理员级别的Windows和PowerShell的新手。我有Linux经验,并且喜欢使用Python,但是我很难理解Windows环境。在bash和Linux中,我习惯于使用cronjobs运行shell脚本,但是在Windows中,在Task Scheduler中运行此命令时遇到了问题。我需要能够运行Google Cloud Directory Sync,以便我们的AD与Gsuite同步。我写了一个可以运行的批处理文件,但我觉得使用蝙蝠文件有点过时了
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命令页面。
答案 0 :(得分:2)
选项1-通过任务计划程序直接计划EXE
无需Powershell。您可以使用Windows Task Scheduler用户界面提供EXE和参数的完整路径。您可以使用开始于选项指定工作文件夹。
选项2-使用“任务计划程序”计划PowerShell脚本
在使用Task Scheduler计划PowerShell脚本时,我发现使用 PowerShell.exe 的-文件选项非常有用。在这种情况下,我将使用cmdlet 开始过程,并将参数封装在PowerShell脚本中。
示例
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -File "c:\MyScript.ps1"
MSDN
语法
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 | -? | /?
笔记本电脑上的示例
通过启动过程传递参数
如果使用的是Start-Process,则可以通过逗号分隔的字符串传递参数数组。
PS C:\> Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%systemdrive%\program files`""
答案 1 :(得分:1)
您的错误表明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"
答案 2 :(得分:0)
我发现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