2015-06-29 102 views
0

我有以下腳本導出所有的最終用戶wifi配置文件。powershell netsh導入xml配置文件

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

然後使用「wireless_backup.ps1」將配置文件名稱放入.CSV。這裏是wireless_backup.ps1。

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

以上所有的工作都很好....將這些配置文件恢復到另一臺PC上是我卡住的地方。這是恢復腳本。

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配置文件會自動添加到PC。我不確定我出錯的地方。請幫忙!

更新 我的老闆不想使用MS用戶狀態遷移出於某種原因,但我們正在進行大規模重新成像。我需要一種輕鬆備份所有以下內容的方法:用戶配置文件數據,Chrome書籤,iTunes備份,Outlook pst文件,打印機,無線配置文件,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' 

上來後,我像一臺計算機的備份腳本,我登錄的用戶,並運行下面的腳本。這是你的答案幫助!正如你可以看到的無線配置文件導出腳本是上面顯示的打印機備份腳本的修改版本。

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 
    } 

這是用戶的備份是什麼樣子的腳本完成 enter image description here

後,你可以看到所有的XML無線配置文件確實得到出口和PowerShell腳本把所有這些文件的名稱中一個csv。 enter image description here

這裏是CSV樣子

enter image description here

PowerShell腳本不會對本地打印機的工作,但我們可以用printbrm.exe備份那些了司機。它確實適用於所有的網絡打印機。 enter image description here

恢復腳本將所有這一切都放回新映像的PC上,沒有任何問題,我將這一切歸功於Stackoverflow的成員!

回答

0

$ Profile.Name是不夠的,你應該提供完整的UNC路徑,

試試這個

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

我完全按照顯示覆制並粘貼了您的代碼,它的工作原理!請在我原來的帖子中看到更新! – Blake

0

我還是要考,但我認爲我與Avshalom我就這一個用問題的根源是什麼。名稱只是一個文件名和擴展名。這不是完整的文件路徑,你應該使用它來獲得一致的結果。如果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 
} 

僅供參考,我不知道(但我在查找過程中),如果這是導出的無線配置文件以適當的方式。

+0

我希望我可以標記兩個答案是正確的!請在我原來的帖子中看到更新! – Blake