Планировщик обхода задач не работает. Любая идея или трюк? - PullRequest
0 голосов
/ 23 апреля 2019

У меня Powershell 2.0 и Windows 7 на двух машинах.Я администратор одного, но у другого есть некоторые ограничения безопасности.

Изучая в Google, я нашел следующий код:

$hour24 = (Get-Date).ToString("HH:00")
& schtasks /create /tn MyBATScheduledTask /sc HOURLY /mo 1 /ST ${hour24} /f /ru SYSTEM /tr "C:\Users\Gabriel\Desktop\MyBat.bat"

Это работает с использованием прав администратора, но когда я пытаюсь на второммашина получает: «Отказано в доступе»

Я также играл с другими кодами, но ничего не помогло.

Есть секрет?Есть возможность?

1 Ответ

0 голосов
/ 23 апреля 2019

Это не проблема кода PowerShell.

Многие конфиги в Windows требуют, чтобы вы были администратором на коробке. Итак, , если Windows требуется администратор, тогда администратор должен использовать в сеансе PowerShell.

Кроме того, эта команда, как написано, не совсем правильная. Кавычки имеют значение при запуске внешних команд / исполняемых файлов.

PowerShell: запуск исполняемых файлов

  1. Оператор звонков &

Почему: используется для обработки строки как ОДНОЙ команды. Полезно для общения с пробелами.

В PowerShell V2.0, если вы используете 7z.exe (7-Zip.exe) или другой Команда, которая начинается с числа, вы должны использовать команду Оператор вызова &.

Синтаксический анализатор PowerShell V3.0 теперь работает умнее, в этом случае вы не нужно & больше.

Сведения: запускает команду, сценарий или блок сценария. Оператор звонка, также известный как «оператор вызова», позволяет запускать команды, которые хранятся в переменных и представлены строками. Потому что звонок оператор не анализирует команду, он не может интерпретировать команду Параметры

Пример:

& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen

Вещи могут быть сложными, когда внешняя команда имеет много параметров или в аргументах или путях есть пробелы!

С пробелами вы должны вкладывать кавычки, а в результате это не всегда ясно!

В этом случае лучше все разделить так:

$CMD = 'SuperApp.exe'
$arg1 = 'filename1'
$arg2 = '-someswitch'
$arg3 = 'C:\documents and settings\user\desktop\some other file.txt'
$arg4 = '-yetanotherswitch'

& $CMD $arg1 $arg2 $arg3 $arg4

# or same like that:

$AllArgs = @('filename1', '-someswitch', 'C:\documents and settings\user\desktop\some other file.txt', '-yetanotherswitch')

& 'SuperApp.exe' $AllArgs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...