powershell netsh импортирует xml-профили

У меня есть следующий скрипт, который экспортирует все профили Wi-Fi конечных пользователей.

netsh wlan export profile folder="\\server\%username%\Wireless"
Powershell.exe -executionpolicy unrestricted -File wireless_backup.ps1

затем имена профилей помещаются в .CSV с помощью «wireless_backup.ps1». Вот файл wireless_backup.ps1.

Get-ChildItem "\\server\$env:username\Wireless" | Select Name | Export-CSV -path '\\server\$env:username\Wireless'

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

Powershell.exe -executionpolicy unrestricted -File wireless_restore.ps1

wireless_restore.ps1 содержит этот фрагмент кода.

$ProfileList=IMPORT-CSV \\server\$env:username\Wireless\wireless.csv

FOREACH ($Profile in $ProfileList) {
netsh wlan add profile filename= $Profile.name
}

Я ожидал, что профили Wi-Fi автоматически добавятся на ПК. Я не уверен, где я ошибся. Пожалуйста помоги!

update Мой начальник по какой-то причине не хотел использовать MS User State Migration, но мы делаем массовое повторное создание образа. Мне нужен был способ легко делать резервные копии всего следующего: данных профиля пользователя, закладок Chrome, резервных копий iTunes, PST-файлов Outlook, принтеров, профилей беспроводной сети, автозаполнения Outlook, обоев и некоторых других вещей.

вот сценарий резервного копирования, который я придумал

REM FORCE OUTLOOK CLOSED, PST FILES WILL NOT BACKUP IF IN USE
cscript "\\server\outlook.vbs"

REM BACKUP USERS PROFILE
xcopy "%userprofile%" "\\server\%username%\%username%" /e /y /i

REM BACKUP SIGNATURES
xcopy "%appdata%\microsoft\signatures" "\\server\%username%\Signatures" /e /y /i

REM BACKUP PINNED TASKBAR ITEMS
xcopy "%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" "\\server\%username%\TaskBar" /e /y /i

REM BACKUP OUTLOOK ARCHIVES PST OUTLOOK MUST BE CLOSED
xcopy "C:\Users\%username%\AppData\Local\Microsoft\Outlook\*.pst" "\\server\%username%\Outlook" /y /i

REM BACKUP CHROME BOOKMARKS
xcopy "C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default" "\\server\%username%\Chrome" /e /y /i

REM BACKUP iTUNES MOBILE BACKUPS
xcopy "C:\Users\%username%\AppData\Roaming\Apple Computer\MobileSync" "\\server\%username%\MobileSync" /e /y /i

REM BACKUP ADVANCED COLOR SETTINGS
REG EXPORT "HKCU\Control Panel\Colors" "\\server\%username%\Wallpaper\Colors1.reg" /y

REM BACKUP ADVANCED COLOR SETTINGS
REG EXPORT "HKCU\Control Panel\Desktop\Colors" "\\server\%username%\Wallpaper\Colors2.reg" /y

REM BACKUP DESKTOP BG SETTINGS
REG EXPORT "HKCU\Control Panel\Desktop\WindowMetrics" "\\server\%username%\Wallpaper\WindowMetrics_Backup.reg" /y

REM START WALLPAPER BACKUP SCRIPT
Powershell.exe -executionpolicy remotesigned -File "wallpaper.ps1"

    wallpaper.ps1 looks like this
    $wallpaper = (Get-ItemProperty 'hkcu:\control panel\desktop\' -Name Wallpaper).Wallpaper
    xcopy $wallpaper "\\itmdtren\z$\backup\$env:username\Wallpaper\"

REM EXPORTS ALL CURRENTLY INSTALLED PRINTERS TO CSV
Powershell.exe -executionpolicy unrestricted -File "\\itmdtren\z$\backup scripts\print_backup.ps1"

    printer_backup.ps1 looks like this
    Get-WMIObject -class Win32_Printer -computer $env:computername | Select Name | Export-CSV

REM EXPORT ALL XML WLAN PROFILES TO BACKUP
netsh wlan export profile folder="\\itmdtren\z$\backup\%username%\Wireless"

REM EXPORTS NAMES OF ALL WLAN PROFILES TO CSV
Powershell.exe -executionpolicy unrestricted -File "\\itmdtren\z$\backup scripts\wireless_backup.ps1"

    wireless_backup.ps1 looks like this
    Get-ChildItem "\\itmdtren\z$\backup\$env:username\Wireless" | Select Name | Export-CSV -path '\\itmdtren\z$\backup\$env:username\Wireless\wireless.csv'

После создания образа компьютера я вхожу в систему как пользователь и запускаю следующий сценарий. Вот тут помогли ваши ответы! Как видите, сценарий экспорта профиля Wi-Fi представляет собой модифицированную версию сценария резервного копирования принтера, показанного выше.

REM FORCE OUTLOOK CLOSED
cscript "\\itmdtren\z$\backup scripts\outlook.vbs"

REM RESTORE USERS PROFILE
xcopy "\\itmdtren\z$\backup\%username%\%username%" "%userprofile%" /e /y /i

REM RESTORE SIGNATURES
xcopy "\\itmdtren\z$\backup\%username%\Signatures" "%appdata%\microsoft\signatures" /e /y /i

REM THIS LINE NOT USED RESTORE TASKBAR
REM xcopy "\\itmdtren\z$\backup\%username%\TaskBar" "%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" /e /y /i

REM RESTORE OUTLOOK DATA FILES PST
xcopy "\\itmdtren\z$\backup\%username%\Outlook\*.pst" "C:\Users\%username%\Documents\Outlook Files" /y /i

REM RESTORE USER DEFAULT CHROME BOOKMARKS/SETTINGS
xcopy "\\itmdtren\z$\backup\%username%\Chrome" "C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default" /e /y /i

REM RESTORE ITUENS BACKUPS
xcopy "\\itmdtren\z$\backup\%username%\MobileSync" "C:\Users\%username%\AppData\Roaming\Apple Computer\MobileSync" /e /y /i

REM RESTORE ADVANCED DISPLAY SETTINGS
REG import "\\itmdtren\z$\backup\%username%\Wallpaper\Colors1.reg"
REG import "\\itmdtren\z$\backup\%username%\Wallpaper\Colors2.reg"
REG import "\\itmdtren\z$\backup\%username%\Wallpaper\WindowMetrics_Backup.reg"

REM wallpaperchanger.exe IS A COMMANDLINE UTILITY THAT RANDOMLY SELECTS A IMAGE FROM A FOLDER, CONVERTS TO BMP, COPIES TO USER PROFILE AND SETS BACKGROUD
"\\itmdtren\z$\backup scripts\WallpaperChanger.exe" "\\itmdtren\z$\backup\%username%\Wallpaper" 2 "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Themes"

REM FORCE UPDATE USER SYSTEM PARAMETERS
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

REM RESTORE PRINTERS FROM CSV
Powershell.exe -executionpolicy unrestricted -File "\\itmdtren\z$\backup scripts\print_restore.ps1"

    print_restore.ps1 looks like this
    $PrinterList=IMPORT-CSV \\itmdtren\z$\backup\$env:username\Printers\printer_export.csv

    FOREACH ($Printer in $PrinterList) {
    Start-Sleep -s 10
    Invoke-Expression 'rundll32 printui.dll PrintUIEntry /in /q /n $($Printer.Name)'
    }

REM RESTORE XML WLAN PROFILES FROM CSV
Powershell.exe -executionpolicy unrestricted -File "\\itmdtren\z$\backup scripts\wireless_restore.ps1"

    wireless_restore.ps1 looks like this
    $ProfileList=IMPORT-CSV \\itmdtren\z$\backup\$env:username\Wireless\wireless.csv

    FOREACH ($Profile in $ProfileList) {
    $fullname = Join-Path "\\itmdtren\z$\backup\$env:username\Wireless" $profile.name
    netsh wlan add profile filename= $fullname
    }

Вот как выглядит резервная копия пользователя после завершения скрипта введите здесь описание изображения

как вы можете видеть, все беспроводные профили XML действительно были экспортированы, и сценарий powershell поместил имена всех этих файлов в csv. введите здесь описание изображения

вот как выглядит csv

введите здесь описание изображения

сценарий powershell не будет работать для локальных принтеров, но мы можем использовать printbrm.exe для их резервного копирования с помощью драйверов. он действительно работал для всех сетевых принтеров просто отлично. введите здесь описание изображения

Сценарий восстановления без проблем помещает все это обратно на вновь созданный образ ПК, и всем этим я обязан членам Stackoverflow!


person Blake    schedule 29.06.2015    source источник


Ответы (2)


$Profile.Name недостаточно, вы должны указать полный путь unc,

попробуй это

FOREACH ($Profile in $ProfileList) {
$fullname = Join-Path "\\server\$env:username\Wireless" $profile.name
netsh wlan add profile filename= $fullname
}
person Avshalom    schedule 29.06.2015
comment
Я скопировал и вставил ваш код точно так, как показано, и это сработало! Пожалуйста, смотрите обновление в моем исходном посте!! - person Blake; 30.06.2015

Мне все еще нужно проверить, но я думаю, что я с Авшалом в этом вопросе, в чем источник проблемы. Имя — это просто имя файла и расширение. Это не полный путь к файлу, который вы должны использовать для получения согласованных результатов. Вполне возможно, что если текущим каталогом в сеансе PowerShell был \\server\%username%\Wireless, у вас может не возникнуть проблемы.

Без тестирования, поскольку у меня нет профиля беспроводной сети на этом компьютере, я предлагаю вам полностью отказаться от CSV, поскольку вам все равно нужно только одно. Я не знаю, была ли это опечатка, но вы экспортируете не совсем тот путь, который вам нужен. В вашем сценарии восстановления вы используете \\server\$env:username\Wireless\wireless.txt, но в вашем сценарии резервного копирования мы видим \\server\$env:username\Wireless. Предполагая, что у вас есть разрешения, вы увидите файл с именем «Wireless» под \\server\$env:username.

wireless_backup.ps1

Get-ChildItem "\\server\$env:username\Wireless" | Select-Object -Expand FullName | Set-Content -path '\\server\$env:username\Wireless\wireless.txt'

wireless_restore.ps1

$ProfileList=Get-Content \\server\$env:username\Wireless\wireless.txt

FOREACH ($Profile in $ProfileList) {
    netsh wlan add profile filename=$Profile
}

К вашему сведению, я не знаю (но я в процессе поиска), подходит ли это для экспорта профилей беспроводной сети.

person Matt    schedule 29.06.2015
comment
Хотел бы я отметить оба ответа как правильные!! Пожалуйста, смотрите обновление в моем исходном посте!! - person Blake; 30.06.2015