Я создал установщик Office 365, где он выполняет локальную установку и динамически изменяет SourcePath, и мне нужно запустить его из файла ISO (обычно я использую USB, но в виртуальных машинах я использую ISO)
При локальном запуске в любом каталоге или на USB-накопителе он работает отлично, но из ISO-образа нет, появляется ошибка:
Set-Content: доступ к пути «C:\Users\Administrator\AppData\Local\Temp\tmpoffice\configuration.xml» запрещен. Нет E:\SMS\PKG\CM10017B\InstallOffice_OfflineMode.ps1:24 символ:164
+ ... fficeMgmtCOM="TRUE" SourcePath="'+$PS1dirEOL) | Set-Content $tempconf
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [Set-Content], UnauthorizedAccessException
+ FullyQualifiedErrorId: System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetContentCommand
Как заставить это работать также в ISO? Я знаю, что ISO доступен только для чтения, но мне показалось странным, что он попытается изменить что-то, что находится не в ISO, а во временном каталоге, и он все еще не может.
$PS1dir = Получить-местоположение
#Пути конфигурации
$tempdir = "$env:TEMP\tmpoffice"
$conf = "$($PS1dir)\configuration.xml"
$tempconf = "$env:TEMP\tmpoffice\configuration.xml"
#Текущий путь с измененным концом строки XML
$PS1dirEOL = "$($PS1dir)`" `AllowCdnFallback=`"TRUE`">"
# Скопируйте файл конфигурации для временной папки и установите переменную для той же
Copy-Item $conf -Destination (New-Item -Path $tempdir -Type Directory -Force) -Recurse -Force
#Заменить старую строку на текущую папку
(Get-Content $tempconf) -replace '<Add OfficeClientEdition=.*', ('<Add OfficeClientEdition="64" Channel="Current" OfficeMgmtCOM="TRUE" SourcePath="'+$PS1dirEOL) | Set-Content $ tempconf
# Запуск установки O365 из нового файла конфигурации
Start-Process cmd.exe -ArgumentList "/c start /MIN $($PS1dir)\setup.exe /configure $tempconf" -Подождите
Remove-Item -Path $tempdir -Force -Recurse