我正在制作可以配置PC的Powershell脚本。我正在使用许多计算机,因此将脚本放置在USB记忆棒上,然后从中启动它。首先,我创建了2个单独的脚本,一个是将stick指定为D:\
,另一个是将其分配为E:\
,但是在两个脚本中进行更改都非常令人沮丧,因此我对其进行了更改并使其对每个脚本通用磁盘号。除了命令是脚本使用内置的Windows程序(例如netsh
或cmd
)外,其他所有命令均正常运行。添加完整路径解决了该问题,但是当任务注册中没有特定任务时,脚本还会启动另一个脚本。我无法更改第二个脚本以在其中添加程序的完整路径
我尝试过:
1.更改启动脚本的执行策略
2.更改脚本的路径
3.将路径更改为Powershell(完整路径)
bat
文件启动主脚本:
@echo off
SET SCRIPT=path-on-usb-stick\script.ps1
SET PATH="%~dp0%SCRIPT%"
@echo on
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command "& %path%"
导致问题的主要脚本的一部分:
if(!(Get-Scheduledtask | Where-Object{$_.TaskName -eq ".check-vpn-new"})) {
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "& 'C:\...\script2.ps1' -Verb RunAs -windowstyle hidden -Wait"
}
我的输出中几乎没有错误:
1.脚本中的参数为null or empty
,但不是
2.脚本无权访问具有管理员权限的文件(即使以管理员权限启动的文件也是如此)
3.脚本看不到应清理的Windows.old
文件夹
(从bat
文件启动script2时,一切正常)