Криптофрагмент белый список Spotify

Я пытаюсь выполнить этот код:

$username = "$env:username"
"C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe" /apply /appdata /silent /a=C:\Users\$username\AppData\Roaming\Spotify\spotify.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spwebinst0.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spotifylauncher.exe

Однако командная строка Cryptoprevent не может распознать переменную. Запуск вышеуказанных команд белых списков. c:\users\$username\appdata ....

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

2 ответа

Powershell не расширяет переменную, поскольку не рассматривает эту часть вашей команды как строку.

Ты можешь использовать Start-Process с ArgumentList чтобы это произошло:

Start-Process "C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe" -ArgumentList "/apply","/appdata","/silent","/a=C:\Users\$username\AppData\Roaming\Spotify\spotify.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spwebinst0.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spotifylauncher.exe"

я хотел бы использовать $env:appdata прямо как это C:\Users\USER\AppData\Roaming папка.

$CryptoPreventPath = "C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe"

$args = @(
    "/apply",
    "/appdata",
    "/silent",
    "/a=$env:appdata\Spotify\spotify.exe,/a=$env:appdata\Spotify\spwebinst0.exe,/a=$env:appdata\Spotify\spotifylauncher.exe"
)

Start-Process $CryptoPreventPath -ArgumentList $args

Для выполнения внешней программы (или любой другой команды), чье имя или путь:

  • заключены в одинарные или двойные кавычки

  • или хранится в переменной

ты должен использовать &, оператор вызова, чтобы вызвать его.

Следовательно:

$username = $env:username
& "C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe" /apply /appdata /silent /a=C:\Users\$username\AppData\Roaming\Spotify\spotify.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spwebinst0.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spotifylauncher.exe

Несколько в сторону:

  • Там нет причин, чтобы приложить $env:username в "..."; кроме того, вы могли бы просто ссылаться $env:username прямо в вашей команде.

  • Идя дальше, как отмечает James C.., вы можете заменить C:\Users\$username\AppData\Roaming с просто $env:APPDATA,

Другие вопросы по тегам