从命令行将参数输入Powershell
我在Powershell_ISE中开发了一个脚本,用于在一台服务器上备份SQL Server数据库,将文件移动到另一台服务器,并使用不同的数据库名称还原到目标服务器。很好 它使用6个强制参数。在Powershell内,我可以跑步从命令行将参数输入Powershell,powershell,command-line,parameter-passing,powershell-ise,Powershell,Command Line,Parameter Passing,Powershell Ise,我在Powershell_ISE中开发了一个脚本,用于在一台服务器上备份SQL Server数据库,将文件移动到另一台服务器,并使用不同的数据库名称还原到目标服务器。很好 它使用6个强制参数。在Powershell内,我可以跑步 C:\PowershellScripts\Servers\CRMBackup.ps1 -SrcSrv uk-sb-sql12\wss -SrcDb UAT_2016_MSCRM -SrcBak \\uk-sb-sql12\backup\ -TrgSrv
C:\PowershellScripts\Servers\CRMBackup.ps1 -SrcSrv uk-sb-sql12\wss -SrcDb UAT_2016_MSCRM
-SrcBak \\uk-sb-sql12\backup\ -TrgSrv uk-sb-sql12\wss -TrgDb preprod_mscrm66 -TrgBak
\\uk-sb-sql12\backup\
而且效果很好
但我无法从命令行运行它。我如何做到这一点
如果我跑
powershell_ise.exe "C:\PowershellScripts\Servers\CRMBackup.ps1" -SrcSrv uk-sb-sql12\wss
-SrcDb UAT_2016_MSCRM -SrcBak \\uk-sb-sql12\backup\ -TrgSrv uk-sb-sql12\wss -TrgDb
preprod_mscrm66 -TrgBak \\uk-sb-sql12\backup\
在命令提示下,我得到一个错误:
如果我调用Powershell而不是Powershell,则一切正常:
powershell.exe "C:\PowershellScripts\Servers\CRMBackup.ps1" -SrcSrv uk-sb-sql12\wss
-SrcDb UAT_2016_MSCRM -SrcBak \\uk-sb-sql12\backup\ -TrgSrv uk-sb-sql12\wss -TrgDb
preprod_mscrm66 -TrgBak \\uk-sb-sql12\backup\
成功完成:
有人能建议如何将命令行参数传递到Powershell_ISE吗
非常感谢不幸的是,您无法使用参数从命令行启动ISE。此处列出了只能自定义会话的可能参数: 你试过这个吗?(powershell.exe而不是powershell_ise.exe)
不能从命令行将参数用于Powershell。\ 一些背景: 您可以使用PowerShell ISE来开发脚本(或记事本或任何东西),并在完成后使用PowerShell.exe执行脚本。您可以用不同的方式执行脚本:
- 从DOS命令中调用powershell.exe,如您在问题中所示
- 从PowerShell命令调用C:\PowershellScripts\Servers\CRMBackup.ps1
- 从Windows任务计划程序(或类似工具…)
- 从CI工具(Jenkins,TeamCity…)
当然,您可以在开发脚本时从PowerShell ISE执行脚本,这可以通过单击“开始”(或按F5)来完成,并且您可以按以下方式传递参数。但是您无法执行将参数传递给powershell_ise.exe的脚本是否将所有内容都用双引号括起来?我的意思是powershell_ise.exe不接受这样的参数:powershell_ise.exe-他想要启动ise来执行脚本有什么具体的原因吗?Powershell命令行是否足够?同意-为什么需要使用
Powershell_ise.exe运行?只需使用powershell.exe运行即可。好的,谢谢大家的一致意见@Poorkenny-在Powershell中备份和恢复数据库时的进度条比Powershell漂亮得多!你完全正确:邓恩幸运的是,有些脚本可以通过ISE正常运行,但不能通过powershell.exe运行。不完全正确:你可以创建一个.ps1并使用powershell_ISE.exe和-file参数。
powershell.exe "C:\PowershellScripts\Servers\CRMBackup.ps1" -SrcSrv uk-sb-sql12\wss -SrcDb UAT_2016_MSCRM -SrcBak \\uk-sb-sql12\backup\ -TrgSrv uk-sb-sql12\wss -TrgDb preprod_mscrm66 -TrgBak \\uk-sb-sql12\backup\