运行 Windows Powershell 脚本只需在编辑器中打开它即可

运行 Windows Powershell 脚本只需在编辑器中打开它即可

我有一个 Windows powershell 脚本,可以在交互式编辑器中正常运行。该脚本是一个简单的单行 sql cmd:

sqlcmd -S servername -d dbname -E -W -w 999 -s "," -Q "SELECT select col1,col2,'','','','','','','','','','','','','','','','','','','','','','','','','' From Table" -o "C:\sqlcmd.csv"

当我在 powershell 命令提示符下输入它时,它工作正常。我将其保存在 ps1 文件中,并尝试通过键入 .\filename.ps1 从 cmd 提示符运行它,它会在记事本中打开它,但不会执行它。

然后我尝试以如下命令运行它:

powershell sqlcmd -S servername -d dbname -E -W -w 999 -s "," -Q "SELECT select col1,col2,'','','','','','','','','','','','','','','','','','','','','','','','','' From Table" -o "C:\sqlcmd.csv"

那句话说“-s 缺少参数...”。

有什么建议可以让它正确运行吗?我在某处读到了一些关于 Windows 执行策略的内容,想知道它是否是那样的。

操作系统是Windows XP,SP2。

答案1

您可以像这样从命令提示符运行 Powershell 脚本:

powershell -command "& .\filename.ps1"

您可能需要更改执行策略来运行 Powershell 脚本。

powershell -command "Set-ExecutionPolicy Unrestricted"

答案2

跑步regedit

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell

将属性的值更改(Default)0

可能的值如下:

  • 0- 执行,
  • Edit- 在 PowerShell ISE 中打开,
  • Open- 在记事本中打开。

出于安全原因,Microsoft 将默认操作设置为Open

答案3

我意识到这个问题已经得到解答了,但是如果你真的想运行 .\filename.ps1,有一种方法可以做到。

第 1 部分:获取 PowerShell 位置

  1. 打开开始 > 所有程序 > 附件 > Windows Powershell。
  2. 右键单击 Windows Powershell 快捷方式。
  3. 左键单击“打开文件位置”。
  4. 突出显示顶部的位置栏。
  5. 右键单击位置栏。
  6. 左键单击“复制”。

第 2 部分:设置 .ps1 文件关联

  1. 转到.ps1 文件的位置。
  2. 右键单击.ps1 文件。
  3. 左键单击“属性”。
  4. 找到“打开方式:”的部分。左键单击右侧的“更改...”按钮。
  5. 左键单击右下角的“浏览...”按钮。
  6. 突出显示顶部的位置栏。
  7. 右键单击位置栏。
  8. 左键单击“粘贴”。
  9. 左键单击位置栏右侧带有指向右的箭头的按钮。
  10. 左键单击“powershell.exe”。
  11. 左键单击“打开”
  12. 返回“打开方式”窗口。
  13. 左键单击右下角的“确定”。
  14. 返回属性窗口。
  15. 左键单击右下角的“确定”。

第 3 部分:从命令提示符运行 .\filename.ps1

  1. 从命令提示符运行它。

.\文件名.ps1

—YP

答案4

即使采用了公认的解决方案,许多用户仍然面临此问题。

您可以像这样从命令提示符运行 Powershell 脚本:

powershell -command "& .\filename.ps1" 您可能需要更改执行策略来运行 Powershell 脚本。

powershell -命令“设置执行策略不受限制”

这应该可以解决问题,如果没有,问题就出在文件扩展名类型上,而不是执行策略上。

按照PowerShell 模块部署,*ps1 和 *psm1 的区别是:

虽然两者之间的唯一区别是扩展,但直接使用 psm1 文件进行开发要麻烦得多,因为它们不能直接执行。

我复制了代码并将其保存在带有 *ps1 扩展名的新文件中,并且执行得非常顺利。

相关内容