执行策略 Powershell

执行策略 Powershell

我在 c:\ 驱动器中创建了一个名为 Scripts 的文件夹,将我的桌面屏幕上的 2 个脚本移动到此文件夹中。

当我运行任何脚本时,powershel 屏幕会快速打开和关闭,并且不会执行任何操作!在桌面上,它们运行正常。我的 PC 用户是管理员。

我看到了下面链接中的说明,但我不想更改 profile.ps1 文件:
改变执行政策

执行策略命令:

Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine     RemoteSigne

我该怎么做才能让我的脚本从我电脑上的任意文件夹运行?

我没有 powershell 配置文件

PS C:\WINDOWS\system32> Test-Path $profile
false
PS C:\WINDOWS\system32>

为了尝试解决这个问题,我创建了一个.bat 文件来运行该脚本。

参见:
如何从批处理文件运行 powershell 脚本

但命令显示错误:

.bat文件中的命令:

PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile - ExecutionPolicy Bypass -File "%~dpn0.ps1'" -Verb RunAs}

错误信息:

The string does not have the terminator: '.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

我更改了命令中的终止符',但无法解决错误!该命令的正确语法是什么?

答案1

所以它成功了。

1 - 问题不在于命令,而在于文件所在文件夹的名称。

文件夹名称:
Script's

Powershell 将文件夹名称中的单引号解释为命令的一部分,并在执行命令时给出错误。只需将文件夹名称更改为Scripts,命令就可以正常工作。

2 – 为了使脚本能够从另一个文件夹运行,您需要:

1 - Create a .bat file, which will call the script;
2 - Place the .bat file and the script inside the same folder;
3 - The name of the .bat file and the script must be the same, eg.
    Myscript.bat
    Myscript.ps1

.bat文件中的命令:

echo off

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"

相关内容