我在 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 文件来运行该脚本。
但命令显示错误:
.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}"