我正在尝试执行以下代码:
$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....
我需要获取当前登录的用户,然后使用命令中已有的实际用户名构建代码,然后执行它。
发布于 2018-06-07 22:49:19
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
https://stackoverflow.com/questions/50743813
复制相似问题