No powershell, as strings em aspas simples (strings literais) são tratadas de maneira ligeiramente diferente das aspas duplas (strings interpoladas).
Para ver isso, considere o seguinte
$name = "Jones"
'Hello $name'
"Hello $name"
Isso produzirá:
Hello $name
Hello Jones
Observe como a variável não foi expandida na única string entre aspas (literal), mas foi expandida na aspas duplas (string interpolada)
Voltando ao seu problema, o problema é que o argumento Register
em Add-AppxPackage
tem aspas simples em torno do que deve ser uma string interpolada. Para escapar das aspas duplas em um arquivo de lote, você precisará usar duas aspas duplas consecutivas (por exemplo, ""
). Em outras palavras, substitua
-Register '$($_.InstallLocation)\AppXManifest.xml'
com
-Register ""$($_.InstallLocation)\AppXManifest.xml""