Чтобы PowerShell правильно анализировал что-либо более сложное, чем имя переменной внутри строки, поместите выражение в $()
:
C:\TEMP\usersoutput_$($DBArray[$Num]).txt
Но поскольку вы уже используете цикл foreach
, вам не нужна индексная переменная $Num
:
foreach ($db in $DBArray) {
Invoke-Sqlcmd -Query "...." -ServerInstance "Server2" -Database $db -Verbose |
Out-File "C:\TEMP\usersoutput_$db.txt"
}
или
"DataBase1","DataBase2","DataBase3","DataBase4","DataBase5" | foreach {
Invoke-Sqlcmd -Query "...." -ServerInstance "Server2" -Database $_ -Verbose |
Out-File "C:\TEMP\usersoutput_$_.txt"
}