Я делаю скрипт Powershell, который может настраивать ПК.Я работаю с большим количеством компьютеров, поэтому скрипт помещается на мою флешку и запускаю его с него.Сначала я создал 2 отдельных скрипта, один, когда стик был назначен как D:\
, а другой, когда он был E:\
, но было очень сложно вносить изменения в оба скрипта, поэтому я изменил его и сделал его универсальным для каждой буквы диска.Все работало нормально, кроме команд, в которых скрипт использовал встроенные программы Windows, такие как netsh
или cmd
.Добавление полного пути решило проблему, но Script запускает и другой сценарий, когда в реестре задач нет конкретной задачи.Я не могу изменить этот второй сценарий, чтобы добавить туда полный путь к программам
Я пробовал:
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"
}
IЯ получаю несколько ошибок в моем выводе:
1. Аргументы в сценарии null or empty
, но не
2. Скрипт не имеет доступа к файлам с правами администратора (даже если он запущен с правами администратора)
3. скрипт не видит Windows.old
папку, которую нужно почистить
(все отлично работает при запуске script2 из bat
файла)