powershell netsh импортира xml профили

Имам следния скрипт, който експортира всички wifi профили на крайни потребители.

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
}

Очаквах, че Wifi профилите автоматично ще се добавят към компютъра. Не съм сигурен къде сбърках. Моля помогнете!

актуализация Шефът ми не искаше да използва 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'

След като изобразя компютър, влизам като потребител и стартирам следния скрипт. Тук вашите отговори помогнаха! Както можете да видите, скриптът за експортиране на wifi профил е модифицирана версия на скрипта за архивиране на принтера, показан по-горе.

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. Ако приемем, че имате разрешенията, ще видите извикване на файл „Безжично“ под \\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