Giter Club home page Giter Club logo

osd's Introduction

OSDeploy

osd's People

Contributors

1eyeitguy avatar ajn142attamu avatar akosbakos avatar andrewtchilds avatar asjimene avatar byteben avatar cattanach-mfld avatar charlesnru avatar charlygott avatar codyrwhite avatar dp250f avatar gwblok avatar jm2k69 avatar jyonke avatar lintnotes avatar osdeploy avatar titandeploy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

osd's Issues

Auto include CMTrace?

Hi just sharing an idea. The same way DaRT alonside its MDT config file are automatically included in WinPE I suggest CMTrace gets also included when found in C:\Windows\CCM\CMTrace.exe . Both OSDCloud and OSDBuilder would greatly benefit from CMTrace being included as it is the perfect tool for reading log files.

Can definitely be done manually by ourselves just by copying the executable into System32 so it's not that important for OSD to support it but it would be a nice to have.

Thank you!

Image for Dism /online /Cleanup-Image /RestoreHealth

Hi . Thanks for the great project.

I wonder about adding functionality, which would allow to download iso/files of the system, with same os version. architecture, language etc., to be used to repair components corruption.
Quite often a existing system has problems with getting proper files from Windows Update and mounting iso is the only option.
So, to save bandwidth/cost I'm thinking about downloading a full Windows image locally and using it to repair the system.

Sample, usage scenario:

  1. import OSD module
  2. download and prepare files to mount wim/iso matching the local system
  3. try to repair the system with dism.

(https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/repair-a-windows-image)

Get Windows product by emeded OEM Key

Describe the solution you'd like
It would be cool to get the Windows type based on the Embedded Windows Key from the bios.
Such as Windows 10 Home, Pro, Enterprise, etc. It would be even cooler If the tool could tell us if the Product key can be used for Win 10 and Win 11.

I was thinking of even a step forward and filtering the Windows selection from the OSDCloudGUI Menu based on the product key.

What this resolves
Sometimes I have Windows 10 Pro, But I install Home.
Sometimes I want to downgrade from Windows 11 to 10, And not sure if the product key allows it.

Having something like this implemented can save alot of time.

Get-OSDCloudDriverpacks --> OS check

I have an example: Surface Laptop 3.
When I am querying Get-OSDCloudDriverPacks | ? name -match 'Surface Laptop 3 15 Intel' --> getting two results

One is for Win10, and one is for Win11.
I am staging my device with Win10, but I am receiving the driver pack for Win11, which cannot be applied in the specialize phase.

In the catalog we would have a tag for OS.
1

It would be nice to check with the $Global:OSDCloud:OSVersion which driver pack fits for the target OS.
$DriverPack = Get-OSDCloudDriverPacks | Where-Object {($.Product -contains $Get_Product_Info) -and ($.OS -match $Params.OSVersion)}

Test-WebConnection use HTTPS and not just HTTP

Is your feature request related to a problem? Please describe.
Not all internal corporate networks allow port 80 traffic to google.com so OSDCloud reports many errors when it tries to see if there is a network connection and can unnecessarily prompt to connect to Wi-Fi when there is already a network connection

Describe the solution you'd like
If Test-WebConnection could try both https and http connections to google.com by default during OSDCloud it would help minimize errors shown on the screen

Describe alternatives you've considered
Dealing with the extra errors and prompts is fine, just annoying and leading to a bad user experience.

Example of what the script could look like: https://github.com/XxQuaDxX/WinPE/blob/main/Test-WebConnection.ps1

MDT OSDCloud Driver Packs for HP not downloading

Hi guys, great job on the Powershell modules! I'm using OSDUpdate a lot in our MDT and are now working on implementing OSDCloud Driver Packs. I have done all the steps in the guide at https://osdcloud.osdeploy.com/concepts/mdt-osdcloud-driverpacks, I have injected the latest OSD module released today and curl (64-bit under C:\Windows\System32 in the Winpe-image (also 64-bit)), updated deploymentshare, replaced boot image in WSD.

The computer are booting (Elitebook 840 G8), applies OS-image, runs Save-ZTIDriverPack (Poweshell and Curl starts), but exits saying the HP is not supported and no driver pack is dowloaded.

After a couple of minutes the computer reboots and doesn't run Expand-ZTIDriverPack since there is no driver packs under C:\Drivers.

I have also tried using OSDCloud.usb and iso with same result.

Also tried an older ProDesk 800 G1 with the same problem.

What am I missing?

Regards

Robert

Get-DellWinPEDriverPack" does not get the latest Dell WinPE10 Driverpack

The function "Get-DellWinPEDriverPack" does not get the latest Dell WinPE10 Driverpack.

There are two issues

Get-DellWinPEDriverPack.ps1 --> Line 33 has the issue.
$null = Invoke-WebRequest -Uri $CurrentDriverPackPage -Method Head -UseBasicParsing -ErrorAction Stop
The method "Head" does not work with the redirect on the Dell website. Replace "Head" with "Get" and the web request is working.

Line 35: $CurrentDriverPack = (Invoke-WebRequest -Uri $CurrentDriverPackPage -UseBasicParsing -Method Get).Links | Where-Object {$.outerHTML -match 'Download Now'} | Select-Object -ExpandProperty href
"Only Windows with language en-us does find the cab file, because Dell does a redirect depending on the language of your system.
For example a Windows with german language pack does not get the string "Download Now". German windows does get "Jetzt herunterladen". I would recommend to change the line with the following code
$CurrentDriverPack = (Invoke-WebRequest -Uri $CurrentDriverPackPage -UseBasicParsing -Method Get).Links | Where-Object {$
.href -match '.CAB'} | Select-Object -ExpandProperty href

I think searching for "CAB" is the better decision, as it is language independent and i would replace the $.outerHTML with $.href

One important information.
Since this month Dell offers not only WinPE10 drivers, but also WinPE11 drivers.
Maybe this script should be updated to return both URL's or an extra function for WinPE11 drivers.

Issue or incorrect list for Microsoft Drivers to USB

Describe the bug
A clear and concise description of what the bug is.
Issue is that when using update-osdcloudusb -Drivers Microsoft, Sometimes it says the file already exists and then skip it, When you run the command again, it shows that its already downloaded when you missing some drivers.

Based on the log it looks like it uses the same name for 4G LTE north America, Twice, and it does not look for Verizon LTE.
This is repeated multiple time during downloading surface Drivers and a clean USB.

Knows missing Drivers
Microsoft Surface 3 LTE Verizon Win 10 1903

And Based on logs, the repeated drivers.
This info is not to claim missing drivers but to bring awareness of the possibility.

The following can be accepted, but providing the info so we are aware.
Surface Book 2, On the catalog, it shows.
1832, and 1793 are to be downloaded
however, SurfaceBook2_Win10_19044_23.092.25730.0 is downloaded. ( this can be a good thing but is misrepresented..)
Repeated instances with the following.
SurfaceBook3_Win10_19044_23.092.28627.0

Is there a difference between these
image

The only file that is downloaded is
SurfaceGo2_Win10_19044_23.093.19290_0.msi

Surface Pro 6 Commercial and Consumer (Same File Name) is there a difference here?
SurfacePro7+_Win10_19044_23.091.9841.0.msi
SurfacePro8_Win10_19044_23.093.30318.0.msi
SurfaceBook2_Win10_19044_23.092.25730.0.msi
SurfaceBook3_Win10_19044_23.092.28627.0.msi

SurfaceGo2_Win10_19044_23.093.19290_0.msi (it shows 3X Dublicate)
SurfaceGo3_Win10_19044_23.093.36099.0.msi (it shows 3X Dublicate)

SurfaceLaptop5_Win10_19044_23.094.39987.0.msi (it trys to download 4 X)

SurfaceLaptop4_Intel_Win10_19044_23.091.11395.0.msi
SurfaceLaptop4_AMD_Win10_19044_23.092.16939.0.msi

I am aware that it must be models sharing the same drivers. And probably, this means nothing. However, since i found an issue here is the report.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...' Run update-osdcloudusb -Drivers Microsoft
  2. Click on '....' Select all (No matter, In my case All Surface 3)
  3. Scroll down to '....' Click ok
  4. See error
    VERBOSE: SourceUrl: https://download.microsoft.com/download/7/5/7/757B0C6E-0C22-400B-90EA-D8AFBD64CC16/Surface3_4GLTE-NorthAmericaUnlocked_ Win10_18362_1902003_0.msi VERBOSE: DestinationName: Surface3_4GLTE-NorthAmericaUnlocked_Win10_18362_1902003_0.msi VERBOSE: DestinationDirectory: D:\OSDCloud\DriverPacks\Microsoft VERBOSE: Overwrite: False VERBOSE: WebClient: False VERBOSE: Directory already exists at D:\OSDCloud\DriverPacks\Microsoft VERBOSE: Destination Directory is writable at D:\OSDCloud\DriverPacks\Microsoft VERBOSE: DestinationName: Surface3_4GLTE-NorthAmericaUnlocked_Win10_18362_1902003_0.msi VERBOSE: DestinationFullName already exists VERBOSE: SourceUrl: https://download.microsoft.com/download/4/C/7/4C7DA85D-03DE-4B89-B8E0-386437331C46/SurfacePro_Win10_19044_23.092.28606. 0.msi

Screenshots
image
image

Desktop (please complete the following information):

  • OS: [e.g. Windows 10 22H2 19045.3448]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

"Component": "DriverPack",

https://www.microsoft.com/en-us/download/details.aspx?id=49920

Also, adding a feature request Where we have the option to download the drivers locally, instead of always redownloading per USB,

Dell Driver

Describe the bug
Get-OSDCatalogDellDriverPack.ps1 defines the $DownloadBaseURL as
$DownloadsBaseUrl = 'http://downloads.dell.com/'

Dell delivers here some Downloads but it seems its a mirror from original source.
So in this mirror is at the moment a broken .CAB file for Dell latitude 7490 (Model 081C)

If i try to Download Driverpack manually i get this page:
https://www.dell.com/support/home/de-de/drivers/DriversDetails?driverId=3F3NX
And that shows that Download base is https://dl.dell.com
$DownloadsBaseUrl = 'https://dl.dell.com/'

Think its for all other downloads the same base URL https://dl.dell.com

So change this line in Get-OSDCatalogDellDriverPack.ps1

cause script has the MD5 checksum from catalog.xml its possible to test the downloaded .CAB against its MD5 to see it is correct.

If i manually change this line i get the correct .CAB file, but in WinPE Phase OSD will be updated leading to "wrong" base URL and getting the broken .CAB File.

Bios Password parameter /p=PASSWORD

Is your feature request related to a problem? Please describe.
All our systems have the same BIOS password set at factory DELL. If you run this script it prompts for a password. If I add to the argument section as below the script works without prompt.

$Arguments = $Arguments + " /r /s /p=PASSWORD"

Describe the solution you'd like
I would like an additional parameter added i.e. Update-MyDellBios -Silent -Reboot -PW=PASSWORD

Describe alternatives you've considered
Removing the password via another script and reapplying post BIOS Update.

Additional context

Save-MsUpCatDriver - Link Parsing Issue

Describe the bug
Save-MsUpCatDriver fails to download any drivers and fails to throw a warning/error when no links are found correctly.
This is directly related to the below recently issue with the MSCatalog module linked below. Microsoft recently changed there base URL for files from https://www.catalog.update.microsoft.com/

https://github.com/ryan-jan/MSCatalog/issues/14

To Reproduce

  1. Install latest version of OSD Module from PSGallery
  2. Attempt to pull drivers - Save-MsUpCatDriver -DestinationDirectory C:\temp\
  3. Function is in a user input state with zero options to select

Expected behavior

  1. Driver files are either downloaded or a warning/error is thrown.

Possible Solution
Mirror fixes in the below pull request
https://github.com/ryan-jan/MSCatalog/pull/15

Screenshots
image

Desktop (please complete the following information):

  • OS: Microsoft Windows 11 Pro
  • Version: 10.0.22000

Cleanup function

Is your feature request related to a problem? Please describe.
No particular problem, just looking to make it appear as though a more traditional ISO install was performed.

Describe the solution you'd like
A cleanup function in the form of "Start-OSDCloudGUI -PostCleanup", which would remove all OSD related content.

C:\Drivers\<DriverPack.exe>  // Okay to keep the extracted contents, but we don't need the original large exe hanging around
C:\OSDCloud
C:\Program Files\WindowsPowerShell\Modules\AzureAD
C:\Program Files\WindowsPowerShell\Modules\MicroSoft.Graph.Intune
C:\Program Files\WindowsPowerShell\Modules\OSD
C:\Program Files\WindowsPowerShell\Modules\WindowsAutoPilotIntune
C:\Recovery
Any other files??

Lenovo L14 / L15 Gen2 W11 driverpack missing in driverpacks.json

We created a OSDCloud Boot Image for one of our customers with a large fleet of Lenovo L14 / L15 Gen 2 (20X1) devices. Deploying Windows 11 22H2 with OSDCloud works like a charm but the devices will start OOBE without a Wifi Adapter.

It seems that the root cause of this is that there is only the W10 driver pack available in OSDCloud for these devices and not the W11 driver pack which exists as well.

https://support.lenovo.com/us/en/downloads/ds547825-sccm-package-for-windows-10-version-1903-1909-2004-thinkpad-l14-gen-2-l15-gen-2

https://download.lenovo.com/pccbbs/mobiles/tp_l1415gen2_mt20x1-20x2-20x3-20x4_w11_21_202112.exe

Please add the W11 driverpack to the driverpacks.json for those devices.

Windows 10 Pro NL is installing Education N NL version

Describe the bug
When i try to instal Windows 10 Pro NL Windows 10 Education N version is actually installed.

To Reproduce
Steps to reproduce the behavior:
See screenshots.

Expected behavior
Installing the correct version.

Screenshots
Screenshot_6
Screenshot_7

Support 23H3 for OSDCloud

Hey,
Microsoft released 23H2 and i wanted to update the iso we provide our onsite support for it, but currently we get an error when wanting to setup the USB.

image

Would it be posible to add support?

Realtek 8822CE Wireless in WinRE

Describe the bug
If I attempt to integrate Realtek 8822 Wi-Fi drivers into my WinRE using the -DriverHWID 'VEN_10EC&DEV_C822' option, Realtek HD Audio drivers are integrated instead.

To Reproduce

Edit-OSDCloudWinPE -CloudDriver Dell,IntelNet,USB,WiFi -DriverHWID 'VEN_10EC&DEV_C822' -StartOSDGUI
2023-04-06-140412 Mounting C:\OSDCloud\Media\Sources\boot.wim

VEN_10EC&DEV_C822 Realtek Semiconductor Corp. - MEDIA - 6.0.9475.1
UpdateID: 0772e9d4-8051-44a5-840f-18b980630bc5
Size: 11.3 MB Last Updated 01/30/2023 14:04:27
Downloading and expanding to C:\Users\redact\AppData\Local\Temp\1054122884\0772e9d4-8051-44a5-840f-18b980630bc5
https://catalog.s.download.windowsupdate.com/c/msdownload/update/driver/drvs/2023/03/79771bce-481c-4026-9d34-034f3f8d308b_7c71e197f261421dcf0e53b6b0050158672945c5.cab
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11.2M  100 11.2M    0     0  5311k      0  0:00:02  0:00:02 --:--:-- 5315k
VERBOSE: Target Image Version 10.0.19041.1
VERBOSE: Successfully added driver C:\Users\redact\AppData\Local\Temp\1054122884\0772e9d4-8051-44a5-840f-18b980630bc5\HDXACPClevo.inf
VERBOSE: Successfully added driver C:\Users\redact\AppData\Local\Temp\1054122884\0772e9d4-8051-44a5-840f-18b980630bc5\HDXClevo.inf
VERBOSE: Successfully added driver C:\Users\redact\AppData\Local\Temp\1054122884\0772e9d4-8051-44a5-840f-18b980630bc5\HDXSSTClevo.inf
VERBOSE: Successfully added driver C:\Users\redact\AppData\Local\Temp\1054122884\0772e9d4-8051-44a5-840f-18b980630bc5\HDXWHITE.inf

Expected behavior
Download and integrate the following CAB:
Realtek Semiconductor Corp. - Net - 2024.10.138.0

https://catalog.s.download.windowsupdate.com/c/msdownload/update/driver/drvs/2022/08/0270b436-5cac-4a52-aa88-e8e1fb7a999d_a5b613e26699adc437dca952f733dbcf5f184dee.cab

Additional context
Grepping the OSD source, it appeared that this driver may be included in the HPSystemCatalog, however, after adding HP to the -CloudDriver string, WinPE still is not detecting this chipset.

I also attempted to load the driver manually, but can't seem to get around the Read-Only folder attributes within the mounted WIM C:\Users\redact\AppData\Local\Temp\Mount921933256\Windows\System32\DriverStore\FileRepository

How to Start-OSDcloud with a custom .wim image without asking?

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Is it possible to 'pre-populate' the variables in Start-OSDcloud with a custom image file on a share (preferably not in "*:\OSDCloud\OS")? Now only this works: Start-OSDCloud -ZTI -FindImageFile

But, this will keep on asking to select the .wim on the found location. I would like to skip that question and continue right away.

Describe alternatives you've considered
Tried setting some globals:
$Global:StartOSDCloud.ImageFileItem = Find-OSDCloudOfflineFile -Name *.wim | Select-Object -First 1 #finds z:\OSDcloud\OS\install.wim
$Global:StartOSDCloud.ImageFileFullName = Split-Path -Path $Global:StartOSDCloud.ImageFileItem.FullName -Leaf
$Global:StartOSDCloud.ImageFileName = Split-Path -Path $Global:StartOSDCloud.ImageFileItem.FullName -Leaf
$Global:StartOSDCloud.OSImageIndex = 1
$Global:StartOSDCloud.ZTI = $true
$Global:StartOSDCloud.OSName = 'Windows 11 21H2 x64'
$Global:StartOSDCloud.OSVersion = 'Windows 10'
Start-OSDCloud

But that starts with asking a operating system selection.

Additional context
File resides on z:\OSDcloud\OS\install.wim

Pre-load one or more Wi-Fi XML profiles and attempt to make a connection

Is your feature request related to a problem? Please describe.
It's related to a lack of WPA3 support. See: #56 #69
If working with an older Wi-Fi chipset, you cannot connect to a WPA3/WPA2 mixed network due to the current implementation not attempting to fallback to WPA2PSK mode.

Describe the solution you'd like
Pre-load exported Wi-Fi profiles (netsh wlan export profile key=clear) and treat Wi-Fi like a wired connection by attempting to make a connection before or at the start of Start-WinREWiFi
Example: https://gist.github.com/skyblaster/d61d0137afb718e4420fad4f19baf162

New-OSDCloudUSB throwing an error on GPT disk

Getting error "New-Partition : A parameter is not valid for this type of partition. The parameters MbrType and IsActive cannot be used on a GPT disk." when running New-OSDCloudUSB and selecting a GPT partitioned USB drive.

It seems Clear-Disk doesn't "clear" the partition type as seen by Get-Disk.

image

To get around this, I first ran Get-Disk -Number 1 | Set-Disk -PartitionStyle MBR, then kicked off New-OSDCloudUSB again and it completed successfully.

Update WSUSXML with June CU

Autopilot has an Issue with the May cumulative update.
It would be nice, when the base OS would be downloaded and applied inclusive the June CU.

Failed to add package

When creating a new OSDCloud template with WinRE I am getting a lot of failed to add package errors with code 0x800f081e. This seems to mean that the package is not applicable to the image but when I try to boot from the USB image created from this template it doesn't launch into PowerShell and says PowerShell is not recognized (One of the errors is for PowerShell)

IMG_0489

I have tried creating it with Windows 10 on a physical device as well as a VM but both have the same issue.

If I create one without the WinRE switch, everything works as expected but would really like to get the WiFi working.

Get-OSDCatalogIntel* html parsing not working

Describe the bug
-UseBasicParsing has been added to the Get-OSDCatalogIntel* scripts.
Because of this the html no longer gets parsed.
This results in the LastUpdate write-verbose messages not working.
And the DriverDescription field cant be filled.

I guess this has been changed because the issue in ticket 26.
The internet explorer engine is not available in winpe.

Second issue -UseBasicParsing has been deprecated with Powershell 6.0 and later.
From the documentation: "all Web requests use basic parsing only."
This means that even without -UseBasicParsing the script wont work correctly on Powershell 6.0 or later.

I did some testing and found some code that appears to be working with Powershell 5.1, 7.2 and Winpe.
Maybe this could be used as a solution.

I have replaced "$DriverInfoWebRequest = Invoke-WebRequest -Uri $OSDCatalogItem.DriverInfo -Method Get -UseBasicParsing" with:
$String = [System.Net.Webclient]::New().DownloadString($OSDCatalogItem.DriverInfo) $Unicode = [System.Text.Encoding]::Unicode.GetBytes($String) $DriverInfoWebRequest = New-Object -Com 'HTMLFile' if ($DriverInfoWebRequest.IHTMLDocument2_Write) { $DriverInfoWebRequest.IHTMLDocument2_Write($Unicode) } else { $DriverInfoWebRequest.write($Unicode) }
and
$DriverInfoHTML = $DriverInfoWebRequest.ParsedHtml.childNodes | Where-Object {$_.nodename -eq 'HTML'}
with:
$DriverInfoHTML = $DriverInfoWebRequest.childNodes | Where-Object {$_.nodename -eq 'HTML'}

To Reproduce
run Get-OSDCatalogIntelEthernetDriver.ps1 or one of the other commands for intel.

Expected behavior
The commands run without error and all fields get filled

Add support for local ESD files

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
The ability for OSD to recognize Windows ESD image files stored on the USB or ISO by their extension, and not just files with the WIM extension.

Describe alternatives you've considered
It is possible to rename the ESD file extension to WIM, but it would be cleaner if it was just recognized automatically.

Additional context

Get-WindowsImage : Reached the end of the file

Has anybody issue at the beginning of the Start-OSDCloud script?

1

2

The same script is just working fine on a different ESX host/environment. And I don't think it's a VMware issue... ;-)
Using thick provisioning and UEFI boot in both cases.

OSDCloud does not automatically reboot when finished

Describe the bug
OSDCloud does not automatically reboot when finished. Option 'restart computer after WinPE' is selected under Deployment Options in OSDCloudGUI. After OS Deployment, just the two minimized screens (one CMD, one PowerShell) are visible. Close these screens will initiate a reboot.

To Reproduce
Steps to reproduce the behavior:
Perform OS Deployment using OSDCloudGUI

Expected behavior
Automatic reboot after OS Deployment

Screenshots
N/A

Additional context
OSD Module version: 23.3.17.1

Get-OSDCatalogLenovoBios

In Get-OSDCatalogLenovoBios.ps1 script, Lenovo is using 'SupportedProduct' XML tag and not 'Product'
--> using -Compatible filter the result is due to this wrong filter, is empty.

Get-OSDCatalogLenovoDriverPack -Compatible is correct.

Add a GUI for Wired Network IP Configuration

Is your feature request related to a problem? Please describe.
Some wired networks do not have DHCP enabled

Describe the solution you'd like
I don't know if this is out of scope for this Module.
A simple UI where I can choose the Network Adapter I want to configure ( with link Status and MAC Address to identify it).
And fields for

  • IPv4 Address
  • IPv4 Netmask
  • IPv4 Gateway
  • IPv4 DNS

would make the Life easier

Describe alternatives you've considered
A configuration via Powershell is possible. But not the best solution for not so tech-savvy People

Test-WebConnection Returns False Even When Connected To Network

The Error
After wiping the disk, the script begins to test the web connectivity and returns false causing the script to fail. Upon further investigation I was able to trace it back to the Test-WebConnection Uri, that being google.com.

If I invoke a web request like such:
Invoke-WebRequest -Method 'Head' -Uri 'google.com' -UseBasicParsing

It would return an error in which it stated that it was forbidden under my policy to reach this site. This is most likely because we are enforcing HTTPS somewhere along the way.

Work Around
To work around this, I edited the Test-WebConnection function and changed the Uri to 'https://google.com' and that was successful.

Is it possible to change the function so that it checks for both http and https connections to avoid this potential error in the future?

This was all tested on a Dell OptiPlex 5090, I can send some screenshot of the exact errors should you need them.

System partition is not the first UEFI boot entry after successful install

Describe the bug
After successful install via OSDCloud, the {bootmgr} UEFI Firmware entry is pointing to a stale volume (non-existent volume 7 in my testing). This results in UEFI searching for a valid boot entry. On various Dell systems in particular, this means hitting the "HTTPS Boot" menu if it is not disabled (enabled by default). This is resolved by pressing OK and allowing UEFI to find the next valid boot entry, which is hopefully the System partition.

To Reproduce
Steps to reproduce the behavior:

  1. Boot a Dell Latitude 3420/3520 with an OSD 23.3.29.1 created Universal WinPE / WinRE
  2. Run Start-OSDCloudGUI and step through install
  3. Reboot to HTTPS Boot menu

Expected behavior
Boot to Windows Boot Manager (volume 2 in my testing)

Screenshots
https://pbs.twimg.com/media/FaowiCnVEAAp19N?format=jpg

Proposed Resolution
As per instructions here, decide where in the installation process to run the following commands.

diskpart.exe
select disk 0
list volume
select volume 2   // assuming volume 2 is the system partition
assign letter=s

I've only tested this once, but it appears to fix the issue. It changes the {bootmgr} device path from "partition=\Device\HarddiskVolume7" to "partition=S:"

Perhaps there is a cleaner method using a single BDCEdit command.

Anyone Using LTSC images with OSDeploy

I am working on getting my team off of SCCM based OSD and for normal use cases (knowledge workers) the tool is perfect! Now I need to be able to have my team build ltsc based units and I want the process to be consistent but last time I tried the embed the iso/wim file it would fail as it could not locate the sku online for the get-featureupdate part of the process. Is there a way to skip that part when selecting a custom 'image'?

Thanks in advance all.

Removal of the Driveletter C not working when bound to Cardreader

Describe the bug
The Driveletter C was assigned to the empty Card reader and was not deletable via the line

Get-Partition -DriveLetter 'C' | Set-Partition -NewDriveLetter (Get-LastAvailableDriveLetter)

The Problem is that the Get-Volume CMDlet return a Object but it can't be consummed by the Get-Partition CMDlet
The Partition for the OS was not created via Start-OSDCloud -ImageFileUrl $imageUrl -ZTI and the Recovery Partition was the Size of the Remaining Space

I tried to change the Driveletter via WMI but that didn't work either

$drive = Get-WmiObject -Class win32_volume -Filter “DriveLetter = ‘c:'”
Set-WmiInstance -input $drive -Arguments @{DriveLetter=”Q:”}

Expected behavior
clear the letter assignment

Additional context
As a workaround I have added the Line &mountvol C: /D to my script

Update Microsoft Surface driver catalog

Describe the bug
Microsoft released new surface drivers and pulled old downloads a few days ago. This leads to Surface driver downloads not working correctly.
Could you update the catalog for OSDCloud please?

Example:
PackageID 104680 was updated, the old download url is not reachable anymore:

{
        "CatalogVersion":  "23.07.16",
        "Status":  null,
        "Component":  "DriverPack",
        "ReleaseDate":  "23.05.15",
        "Manufacturer":  "Microsoft",
        "Model":  "Surface Pro 9",
        "Product":  "Surface_Pro_9_for_Business_2038",
        "Name":  "Microsoft Surface Pro 9 Commercial Win11 22H2",
        "PackageID":  "104680",
        "FileName":  "SurfacePro9_Win11_22621_23.044.40352.0.msi",
        "Url":  "https://download.microsoft.com/download/e/9/a/e9a35d1b-7b4c-48d4-8619-5301d4c09f65/SurfacePro9_Win11_22621_23.044.40352.0.msi",
        "DownloadCenter":  "https://www.microsoft.com/en-us/download/details.aspx?id=104680",
        "OSVersion":  "Windows 11 x64",
        "OSReleaseId":  "22H2",
        "OSBuild":  "22621",
        "HashMD5":  "36824C20EECF29A3A9A67C2EC6B6BC"
}

https://github.com/OSDeploy/OSD/blob/master/Catalogs/MicrosoftDriverPackCatalog.json

Start-OOBEDeploy WinPE media

Hi, this is not really an issue but more of a question. My goal is to build a zero-touch WinPE which works great with the following command. However I want to enable .NET Framework 3.5 and remove some bloatware so I created a json for OOBEDeploy which is in the workspace alongside my Autopilot json. I confirmed both JSON are in boot.wim too. Everything works fine but the Start-OOBEDeploy doesn't run automatically after the restart. Is there already an OSD function for that or perhaps I need to add my own command in setupcomplete.cmd ?

Edit-OSDCloudWinPE -Wallpaper "C:\OSDCloud\logo.jpg" -CloudDriver * -WorkspacePath C:\OSDCloudProd -StartOSDCloud "-OSVersion 'Windows 11' -OSBuild 21H2 -OSEdition Enterprise -OSLanguage en-gb -ZTI -Restart"

Get-FeatureUpdate broken for me since 23.4.25.1 Release

Describe the bug
A clear and concise description of what the bug is.
Since the 23.4.25.1 Release, the Get-FeatureUpdate seems to be broken for me

To Reproduce
Steps to reproduce the behavior:
Get-FeatureUpdate -OSName 'Windows 11 22H2 x64'
gives out Windows 10 22H2 x86

Expected behavior
A clear and concise description of what you expected to happen.
It should give out 'Windows 11 22H2 x64'

Screenshots
If applicable, add screenshots to help explain your problem.
Not working:
image
with an older version:
image

Thanks a lot

Wrong OSImageIndex is selected if the WindowsImageCount for the ESD file equals 9

Situation:
OSD Version: 23.4.12.2
Deployment method: OSDCloudGUI
Operating System selection: Windows 11 22H2 x64 Pro nl-nl Retail (Index 9)
ESD file: 22621.382.220806-0833.ni_release_svc_refresh_CLIENTCONSUMER_RET_x64FRE_nl-nl.esd

After deployment, Windows 11 Pro N is installed instead of Windows 11 Pro
This is caused by the fact that the OSImageIndex for the Pro edition in this ESD file should be 8 instead of 9:
PS C:\WINDOWS\system32> Get-WindowsImage -ImagePath 'D:\OSDCloud\OS\Windows 11 22H2\22621.382.220806-0833.ni_release_svc_refresh_CLIENTCONSUMER_RET_x64FRE_nl-nl.esd' |Select ImageName, ImageIndex ImageName ImageIndex Windows Setup Media 1 Microsoft Windows PE (amd64) 2 Microsoft Windows Setup (amd64) 3 Windows 11 Home 4 Windows 11 Home N 5 Windows 11 Education 6 Windows 11 Education N 7 Windows 11 Pro 8 Windows 11 Pro N 9

Probable root cause:
In OSDCloud.ps1, the following code section should be hit, but isn't (console output 'Adjusting selected ImageIndex by -1' is not displayed):

if (($OSLicense -eq 'Retail') -and ($Global:OSDCloud.WindowsImageCount -eq 9)) { if ($OSEdition -eq 'Home Single Language') { Write-Warning "$((Get-Date).ToString('yyyy-MM-dd-HHmmss')) OSDCloud Failed" Write-Warning "This ESD does not contain a Home Single Edition Index" Write-Warning "Restart OSDCloud and select a different Edition" Start-Sleep -Seconds 86400 Stop-Computer -Force Exit } if ($OSEdition -notmatch 'Home') { Write-DarkGrayHost "This ESD does not contain a Home Single Edition Index" Write-DarkGrayHost "Adjusting selected ImageIndex by -1" $Global:OSDCloud.OSImageIndex = ($Global:OSDCloud.OSImageIndex - 1) Write-DarkGrayHost "ImageIndex: $($Global:OSDCloud.OSImageIndex)" } }

This probably happens because the $OSLicense variable is $null. I'm suspecting this has something to do with the introduction of the OSD.json file in newer versions of the OSD module, where the OSLicense is now referenced as OSActivation.
I've included the OSDCloud.json and Deploy-OSDCloud.log, which shows the $null value for the OSLicense property and the 9 value for the OSImageIndex propery in the $global:OSDCloud variable.

The last OSD version I know for sure didn't have this issue, is 23.1.10.1

OSDCloud.zip
2023-04-20-163954-Deploy-OSDCloud.log

Surface Pro 8 Drivers Support

My customer got for his Surface Pro 8 device the following error message:
image

You can see the log here:
image

Sadly, I wasn't able to check if the MSI file has been successfully downloaded or not.

ImageFileUrl error with URL query parameters

Describe the bug
When downloading an image from a URL using the ImageFileUrl parameter, if the URL contains a query string i.e. an Azure file with a SAS token, the WebFile.ps1 script throws an error. In short, the query parameters are not removed and end up being included in the local destination filename - which is invalid.

To Reproduce
Run Start-OSDCloud -ImageFileUrl "<Any_URL_with_query_parameters>"

Expected behavior
I would expect the URL query parameters to be removed/not included in the local file

I have fixed the problem in a fork and I am happy to submit a pull request if the code meets your requirements/expectations.

Thanks,
Iain

Update-MyDellBios Creates an Object that ChildPath won't accept as a parameter

I believe the issue is that some BIOS are supported by multiple models and you script tries to categorize it, it creates an object with both models where the script expects only one.

This is what occurred on my Latitude 5580:
updateError

VERBOSE: Filtering XML for items compatible with SystemSKU 07A8
VERBOSE: Filtering XML for BIOS
VERBOSE: You are currently running BIOS version 1.10.4
Join-Path : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'ChildPath'. Specified method is not supported.
At C:\Program Files\WindowsPowerShell\Modules\OSD\21.3.4.1\Public\Dell\Update-MyDellBios.ps1:46 char:36
+     $OutFile = Join-Path $env:TEMP $DestinationFile
+                                    ~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Join-Path], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.JoinPathCommand
 
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\OSD\21.3.4.1\Public\Dell\Update-MyDellBios.ps1:48 char:25
+     if (-NOT (Test-Path $OutFile)) {
+                         ~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
 
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\OSD\21.3.4.1\Public\Dell\Update-MyDellBios.ps1:52 char:25
+     if (-NOT (Test-Path $OutFile)) {
+                         ~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
 
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\OSD\21.3.4.1\Public\Dell\Update-MyDellBios.ps1:58 char:25
+     if (-NOT (Test-Path $OutFile)) {Write-Warning "Unable to download ...
+                         ~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand

I believe this is the same thing that was occurring when I tested your previous script code that downloaded multiple BIOS versions and categorized them. Certain models created an object in the bios group.
bios

Here are the bios versions available:
BiosVersions

Desktop (please complete the following information):
Windows 10 1909
Latitude 5580

Please let me know if you need help testing or if you need any more information to help recreate the error. I appreciate all your hard work on this. Obviously you are pulling more then enough info for me to get what I need but i'd love to help you get this working.

A nice feature add might be supporting the /f option when running silently. I have had to use it before to get some installations to work.

/f - Override a soft dependency error returned from the Dell System BIOS Update. NOTE: Requires /s option.
https://www.dell.com/support/kbdoc/en-us/000136752/command-line-switches-for-dell-bios-updates

~Jim
@UTBlizzard

OSDCloud Azure Sandbox Loop

Describe the bug
When using OSDCloud Azure Sandbox (az.osdcloud.com), after Get-OSDCloudAzureResources has completed, it loops back to Connect-OSDCloudAzure

To Reproduce
Steps to reproduce the behavior:

  1. Boot to WinPE
  2. Use OSDCloud Azure Sandbox by running in a command prompt: powershell iex (irm az.osdcloud.com)
  3. Authenticate to Azure
  4. After Get-OSDCloudAzureResources has completed, it loops back to Connect-OSDCloudAzure

Expected behavior
OSDCloudAzure GUI should launch

Screenshots
image

Desktop (please complete the following information):

  • MDT WinPE

Smartphone (please complete the following information):

  • Hyper-V Virtual Machine

Update-OSDCloudUSB -OS not updated for new location of OS images

Describe the bug
Update-OSDCloudUSB -OS still saves OS images to the root of the [OSDCloudWorkspaceDir]\OS folder, while the latest version of OSDCloud seems to use a different format: [OSDCloudWorkspaceDir]\OS[BUILDNUMBER] [RELEASE]

To Reproduce
Steps to reproduce the behavior:

  1. Deploy an OS using OSDCloudGUI with a fresh OSDCloud USB that does not contain a preloaded OS image
  2. The OS that is downloaded during deployment is saved to [OSDCloudWorkspaceDir]\OS[BUILDNUMBER] [RELEASE] folder
  3. Update a fresh OSDCloud USB using Update-OSDCloudUSB -OS
  4. The OS that is downloaded is saved to [OSDCloudWorkspaceDir]\OS folder

Expected behavior
Both methods should use the same logic for storing OS images

Additional context
OSD Module version: 23.3.17.1

Start-OOBEDeploy issue

Hi,

I'm having issues where Start-OSDCloud won't automatically copy X:\OSDCloud\Config\OOBEDeploy\OSDeploy.OOBEDeploy.json to C:\ProgramData\OSDeploy\OSDeploy.OOBEDeploy.json but from the same WinPE media I can run Start-OSDCloudGUI with the same values and OSDeploy.OOBEDeploy.json will be copied which allows me to run Start-OOBEDeploy without parameters after the restart.
This is how I execute Start-OSDCloud. Am I supposed to include an additional parameter to tell it to copy OSDeploy.OOBEDeploy.json ?

Start-OSDCloud -OSVersion 'Windows 11' -OSBuild 21H2 -OSEdition Enterprise -OSLanguage en-gb -ZTI -Restart

Thank you!

Test-MicrosoftUpdateCatalog - Missing -UseBasicParsing Parameter

Describe the bug
Save-MsUpCatDriver fails to download any drivers as the new function Test-MicrosoftUpdateCatalog will always fail in WinPE as the Internet Explorer engine is not available for DOM parsing,

To Reproduce
Boot into WinPE with a custom OSDCloud ISO/USB, install or update to version 22.5..23.2.. Open PowerShell and invoke the command Test-MicrosoftUpdateCatalog.

Expected behavior
The command returns a TRUE or FALSE value and allows drivers/firmware updates to be downloaded from the Microsoft Update Catalog website.

Possible Solution
Add the BasicParsing parameter

Screenshots
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.