Рейтинг:0

Установка O365 через powershell внутри ISO

флаг us

Я создал установщик 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
флаг in
Защитник активен? В последнее время я все чаще обнаруживаю, что Защитник блокирует доступ к файлам и каталогам, что не должно быть проблемой. И это не всегда показывает уведомление.
AegisShimon avatar
флаг us
Да, он включен, но странно отключать защитник для копирования файла во временную папку, учитывая, что при этом без ISO такой проблемы не возникает. Команда, которая не работает, кажется, Set-Content, но когда я проанализировал больше, она даже не копирует файл во временную папку, что очень странно.
Рейтинг:0
флаг in

Проблема в том, что файл только для чтения. Все файлы в образах .iso получают атрибут только для чтения, и этот атрибут сохраняется при копировании файла. Вам нужно удалить его, прежде чем вы сможете редактировать файл.

Set-ItemProperty $tempconf -Name IsReadOnly -Value $false

Но это не единственная проблема. После удаления атрибута ReadOnly вы столкнетесь со следующей ошибкой, сообщающей, что запись в файл невозможна, поскольку он используется другим процессом (поскольку Получить-контент до сих пор активен). Вам нужно будет использовать временную переменную.

$conf = (Get-Content $tempconf) -replace '<Add OfficeClientEdition=.*', ('<Add OfficeClientEdition="64" Channel="Current" OfficeMgmtCOM="TRUE" SourcePath="'+$PS1dirEOL)
$конф | Set-Content $tempconf
AegisShimon avatar
флаг us
Отлично, это действительно решило мою проблему, БОЛЬШОЕ СПАСИБО! Я воспользовался возможностью и изменил имя переменных, чтобы оно соответствовало лучшим практикам, и теперь я могу выполнить установку с использованием SourcePath в автономном ISO-образе SCCM (потому что раньше это было невозможно, так как SCCM все время меняет путь PKG Office SMS во время установки)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.