从命令行

时间:2016-08-26 11:28:48

标签: powershell command-line parameter-passing powershell-ise

我在Powershell_ISE中开发了一个脚本,用于在一台服务器上备份SQL Server数据库,将文件移动到另一台服务器并使用不同的数据库名称还原到目标服务器。工作正常。

它使用6个必需参数。在Powershell_ISE内我可以运行

    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_ISE parameter error

如果我打电话给Powershell而不是Powershell_ISE,一切都很好:

    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\

成功完成:

Successful run from Powershell

有人可以建议如何将命令行参数传递给Powershell_ISE吗?

由于

3 个答案:

答案 0 :(得分:3)

您无法在命令行中将参数用于Powershell_ISE。

一些背景知识:

您使用 PowerShell ISE开发您的脚本(或记事本或其他),并在完成后使用 powershell.exe执行。您可以通过不同方式执行脚本:

  • DOS命令,调用您在问题中指明的powershell.exe。
  • PowerShell命令,调用C:\ PowershellScripts \ Servers \ CRMBackup.ps1
  • 来自 Windows任务计划程序(或类似工具...)
  • 来自 CI工具(Jenkins,TeamCity ......)

当然,您可以在开发脚本时从PowerShell ISE执行脚本,可以通过单击“开始”(或按F5)来完成,您可以将参数传递为explained here。但是你无法执行将参数传递给powershell_ise.exe的脚本

答案 1 :(得分:1)

你试过这个吗? (powershell.exe而不是powershell_ise.exe)

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\

答案 2 :(得分:0)

不幸的是,您无法使用参数从命令行启动ISE。可以自定义会话的可能参数列表如下:

https://technet.microsoft.com/en-us/library/hh847883