从命令行将参数输入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

我在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 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\