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

Fra*_*Orr 15 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"
Run Code Online (Sandbox Code Playgroud)

当我在 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"
Run Code Online (Sandbox Code Playgroud)

上面写着“-s 缺少参数...”。

关于让它正确运行的任何建议?我在某处阅读了一些关于 Windows 执行策略的内容,并想知道它是否是这样的。

操作系统为 Windows XP SP2。

小智 12

regedit

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
Run Code Online (Sandbox Code Playgroud)

(Default)属性值更改为0

可能的值如下:

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

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

  • 这对我不起作用。我什至在编辑注册表后关闭了 PowerShell 并重新打开它(以管理员身份)。`&'C:\code\redwoodblog\node_modules\.bin\redwood'` 仍然只是打开一个 js 文件。 (2认同)

Ada*_*rax 6

您可以从命令提示符运行 Powershell 脚本,如下所示:

powershell -command "& .\filename.ps1"
Run Code Online (Sandbox Code Playgroud)

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

powershell -command "Set-ExecutionPolicy Unrestricted"
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用。`Get-ExecutionPolicy` 已经为我返回了“Unrestricted”,然后运行 ​​`powershell -command &'C:\code\redwoodblog\node_modules\.bin\redwood'` 仍然只是打开了一个 js 文件。 (3认同)

Phi*_*l A 6

我意识到这个问题已经回答了,但如果你真的想运行 .\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