Ori and the Blind Forest: Definitive Edition Launches Today on Switch – Xbox Wire

Finally the wait is over and we’re thrilled to announce that Ori and the Blind Forest: Definitive Edition is available today for Nintendo Switch in the Nintendo eShop! We couldn’t be happier with the reception so far, especially from our fans!

Ori and the Blind Forest: Definitive Edition is a unique action platformer that combines deep Metroidvania style gameplay with emotional storytelling. The forest of Nibel is dying and Ori must find courage to confront Kuru, the dark owl, in order to save the forest. Ori’s journey is a story about love, sacrifice, and the hope that exists in us all.

To our Switch friends, we’re excited for you to enjoy the same Ori and the Blind Forest: Definitive Edition experience that Xbox and PC players know and love. We can’t wait for you to share your stories of your time exploring Nibel!

Stay tuned for the latest game news and updates at orithegame.com.

Go to Original Article
Author: Microsoft News Center

The future of PowerShell begins to sharpen in focus

While predicting on the future of PowerShell, it helps to take a look back at its beginnings to see where it’s going as a cross-platform management tool.

Microsoft released PowerShell in 2006 as part of the Windows desktop and server versions released that year. The company added thousands of cmdlets over the years to expand the tool’s reach across the data center and into the cloud.

Microsoft’s embrace of Linux, due in large part to the number of Linux virtual machines running on Azure, steered the company to make a significant change with PowerShell in 2016. Microsoft ended development of Windows PowerShell in favor of a new tool called PowerShell Core, which would be an open source project to rework the utility as a cross-platform management tool for Windows, Linux and macOS systems.

A lot of features Windows PowerShell had were missing in the first PowerShell Core release in January 2018, mainly due to a switch in the underlying platform from the Windows-based .NET Framework to the cross-platform .NET Core. Jeffrey Snover, the inventor of PowerShell, has said the Windows edition will always have support but recommends IT pros learn how to use PowerShell Core, which is the version Microsoft uses to manage workloads on Azure.

SearchWindowsServer advisory board members shared their thoughts on the recent changes with the cross-platform management tool and their expectations for the future of PowerShell.

Recent releases broaden appeal beyond Windows admins

Reda ChouffaniReda Chouffani

Reda Chouffani: Many administrators who might have resisted moving away from familiar tools such as web interfaces or Microsoft Management Console have come to realize that despite the commands written in PowerShell, it is capable of automating some of the most complex and tedious activities.

At first, a lot of IT pros saw PowerShell just as another replacement to the traditional command line that ships with every Windows box. But once they dug deeper, they found how beneficial it was to use PowerShell commands to manage Exchange Server, Office 365, Skype for Business, Azure and a slew of other platforms.

Opening the PowerShell platform to non-Windows platforms after the version 5.1 release was a significant shift for Microsoft meant to encourage administrators who manage Linux to adopt PowerShell as their management and task automation tool.

Changes in the latest preview versions of PowerShell Core 7, which is based on .NET Core 3.0, include more management modules to extend the functionality. Another recent development is the return of the Out-GridView cmdlet to PowerShell Core. Many administrators used this cmdlet in Windows PowerShell to build GUIs for scripts. The PowerShell Core team was able to bring it back based on user feedback and support of WinForms and the Windows Presentation Foundation in .NET Core 3.0.

Azure is the gateway to get Linux users on board

Stuart Burns: There is no getting away from the fact that automation is growing in the world of IT. How that automation is achieved varies, but the one constant is scripting.

Stuart BurnsStuart Burns

Within Linux, Bash scripting, along with languages like Perl and Python, have been the go-to for the serious systems administrator. Microsoft had nothing in this space until relatively recently, in the form of PowerShell for non-Microsoft operating systems. It is a departure from the Microsoft of old, whereby Linux was seen as a second-class citizen, to put it politely.

PowerShell is a good scripting language, but it remains to be seen how popular it will become beyond Windows administrators. Linux administrators tend to stay with tools that do the job. Many have spent years honing their skills and scripts with Bash. They are not familiar with having upgrades forced on them. I know some administrators who run legacy versions of infrastructure mainly because it just refuses to break.

Microsoft’s embrace of Linux, due in large part to the number of Linux virtual machines running on Azure, steered the company to make a significant change with PowerShell in 2016.

Linux IT pros also have long memories. They don’t trust Microsoft for its anti-Linux stance from years ago when former CEO Steve Ballmer called Linux a cancer, which will take a very long time for them to forget.

Until the large Linux vendors support PowerShell as a first-class citizen, it’s not likely the community will have the motivation to give PowerShell a chance. For example, on the RedHat exam, there is a basic scripting requirement. There is no outside access — or time to download or install — PowerShell so the test-taker has to learn Bash to pass the exam.

One thing Microsoft does have in its favor is the ever-increasing uptake of Linux on the Azure platform. The functionality that PowerShell Core provides, while available in other languages as plug-ins, is definitely easier to utilize on Microsoft’s cloud platform.

Some admins need a little extra help to get started

Brian Kirsch: When Microsoft introduced PowerShell in 2006, administrators had a hard time finding a use for it because the scripting and command lines could only go so far at the time.

The key to PowerShell was its task automation framework over a new scripting format. It took many in IT by surprise and gave them capabilities they didn’t know they might need.

Fast forward to January 2018 and Microsoft took its first serious step to expand PowerShell beyond Windows. The release of PowerShell Core and Linux support expanded the capabilities of this automation tool. It was a big change, but, ultimately, a safe one for Microsoft. While releasing something along the lines of Active Directory for Linux could affect the Windows Server bottom line, making PowerShell cross-platform didn’t.

Brian KirschBrian Kirsch

Building a PowerShell bridge between environments might help make the language a staple of the data center across many platforms. With plug-ins from a variety of third-party platforms, including big vendors such as VMware, this has established PowerShell as the ideal language going forward. So, even if you were not using Hyper-V, you could still use PowerShell for VMware.

Where does Microsoft go from here? Bringing more features and extending the cross-platform capabilities will be a help, but the team should think about ways to make it easier to get the traditional Windows admin using PowerShell Core. In my experience, a lot of admins tend to modify code, not write it from scratch, so the ability to generate code from a wizard was a welcome addition. It might help if the PowerShell developers put together a visual modeling tool to stitch together snips of code for a larger view of a longer automation routine.

It might seem odd to use a graphical interface for something that runs on a command line, but it’s hard for the longtime Windows admin to hand over their GUI management in exchange for code, no matter how powerful it may be.

The Linux side lags too far behind

Richard Siddaway: PowerShell has become the standard automation tool for Windows administrators since its introduction. The announcement of PowerShell Core in 2016 brought with it a lot of uncertainty.

When compared to Windows PowerShell 5.1, the initial version of PowerShell Core, 6.0.0, had a number of functionality gaps. PowerShell Core had no workflows. It was missing cmdlets, such as the WMI cmdlets. Many of the Windows PowerShell modules, such as Active Directory, would not work with PowerShell Core.

Since the initial PowerShell Core 6.0.0 release, the PowerShell project team addressed many of these points:

  • Foreach-Object has a parallel parameter to provide some, if not most, of the functionality delivered by PowerShell workflows.
  • The PowerShell team reinstated missing cmdlets where applicable. For instance, the WMI cmdlets aren’t available in PowerShell Core, but they have been effectively deprecated in Windows PowerShell in favor of the Common Information Model cmdlets.
  • Most of the Windows PowerShell modules have been recompiled to work under PowerShell Core and Windows PowerShell. You can use the Windows Compatibility module to enable most of the rest of the modules to work with PowerShell Core. Some gaps remain, but they are shrinking.

There is little incentive for Windows administrators to embrace PowerShell Core because Windows PowerShell 5.1 does what most administrators need. Recent announcements from the PowerShell team indicate that PowerShell Core 7.x will ship alongside Windows PowerShell 5.1. This may actually reduce adoption on the new PowerShell version as many administrators will stick with what they know.

Richard SiddawayRichard Siddaway

Take up of PowerShell Core on Linux has been much more enthusiastic than on Windows. Ironically, this may hinder further adoption on the Windows side if PowerShell Core is seen as too Unix-centered. The main issue with PowerShell on Linux, especially for Windows users, is there just isn’t the breadth of cmdlets to match Windows.

To become a cross-platform management tool, the Linux side of PowerShell Core needs more cmdlets for systems management to match the level in Windows. A base install of Windows 10 comes with about 1,500 cmdlets while the PowerShell Core for Linux has about 350 cmdlets. At a minimum, administrators need cmdlets to manage network cards, IP addresses, storage, DNS clients, and task and job scheduling. The administrator should be able to issue the same command against any platform and get the desired results in a compatible format.

PowerShell as an open source project ensures future development, but it also comes with the risk that Microsoft could stop supporting it. The other issue is that many of the recent changes are best described as tweaks to address edge cases. There doesn’t seem to be an overall roadmap. The PowerShell team’s blog post regarding the PowerShell 7 roadmap — they plan to drop the “Core” part of the name with the GA release — is a bit of a misnomer because there is no indication of where PowerShell is going and what it’s trying to be. The team should resolve these issues to make it clear what the future of PowerShell will be.

Go to Original Article
Author:

How to work with the WSUS PowerShell module

In many enterprises, you use Windows Server Update Services to centralize and distribute Windows patches to end-user devices and servers.

WSUS is a free service that installs on Windows Server and syncs Windows updates locally. Clients connect to and download patches from the server. Historically, you manage WSUS with a GUI, but with PowerShell and the PoshWSUS community module, you can automate your work with WSUS for more efficiency. This article will cover how to use some of the common cmdlets in the WSUS PowerShell module, found at this link.

Connecting to a WSUS server

The first task to do with PoshWSUS is to connect to an existing WSUS server so you can run cmdlets against it. This is done with the Connect-PSWSUSServer cmdlet. The cmdlet provides the option to make a secure connection, which is normally on port 8531 for SSL.

Connect-PSWSUSServer -WsusServer wsus -Port 8531 -SecureConnection
Name Version PortNumber ServerProtocolVersion
---- ------- ---------- ---------------------
wsus 10.0.14393.2969 8530 1.20

View the WSUS clients

There are various cmdlets used to view WSUS client information. The most apparent is Get-PSWSUSClient, which shows client information such as hostname, group membership, hardware model and operating system type. The example below gets information on a specific machine named Test-1.

Get-PSWSUSClient Test-1 | Select-Object *
ComputerGroup : {Windows 10, All Computers}
UpdateServer : Microsoft.UpdateServices.Internal.BaseApi.UpdateServer
Id : 94a2fc62-ea2e-45b4-97d5-10f5a04d3010
FullDomainName : Test-1
IPAddress : 172.16.48.153
Make : HP
Model : HP EliteDesk 800 G2 SFF
BiosInfo : Microsoft.UpdateServices.Administration.BiosInfo
OSInfo : Microsoft.UpdateServices.Administration.OSInfo
OSArchitecture : AMD64
ClientVersion : 10.0.18362.267
OSFamily : Windows
OSDescription : Windows 10 Enterprise
ComputerRole : Workstation
LastSyncTime : 9/9/2019 12:06:59 PM
LastSyncResult : Succeeded
LastReportedStatusTime : 9/9/2019 12:18:50 PM
LastReportedInventoryTime : 1/1/0001 12:00:00 AM
RequestedTargetGroupName : Windows 10
RequestedTargetGroupNames : {Windows 10}
ComputerTargetGroupIds : {59277231-1773-401f-bf44-2fe09ac02b30, a0a08746-4dbe-4a37-9adf-9e7652c0b421}
ParentServerId : 00000000-0000-0000-0000-000000000000
SyncsFromDownstreamServer : False

WSUS usually organizes machines into groups, such as all Windows 10 machines, to apply update policies. The command below measures the number of machines in a particular group called Windows 10 with the cmdlet Get-PSWSUSClientsinGroup:

Get-PSWSUSClientsInGroup -Name 'Windows 10' | Measure-Object | Select-Object -Property Count
Count
-----
86

How to manage Windows updates

With the WSUS PowerShell module, you can view, approve and decline updates on the WSUS server, a very valuable and powerful feature. The command below finds all the Windows 10 feature updates with the title “Feature update to Windows 10 (business editions).” The output shows various updates on my server for version 1903 in different languages:

Get-PSWSUSUpdate -Update "Feature update to Windows 10 (business editions)"  | Select Title
Title
-----
Feature update to Windows 10 (business editions), version 1903, en-gb x86
Feature update to Windows 10 (business editions), version 1903, en-us arm64
Feature update to Windows 10 (business editions), version 1903, en-gb arm64
Feature update to Windows 10 (business editions), version 1903, en-us x86
Feature update to Windows 10 (business editions), version 1903, en-gb x64
Feature update to Windows 10 (business editions), version 1903, en-us x64

Another great feature of this cmdlet is it shows updates that arrived after a particular date. The following command gives the top-five updates that were downloaded in the last day:

Get-PSWSUSUpdate -FromArrivalDate (Get-Date).AddDays(-1) | Select-Object -First 5
Title KnowledgebaseArticles UpdateType CreationDate UpdateID
----- --------------------- ---------- ------------ --------
Security Update for Microso... {4475607} Software 9/10/2019 10:00:00 AM 4fa99b46-765c-4224-a037-7ab...
Security Update for Microso... {4475574} Software 9/10/2019 10:00:00 AM 1e489891-3372-43d8-b262-8c8...
Security Update for Microso... {4475599} Software 9/10/2019 10:00:00 AM 76187d58-e8a6-441f-9275-702...
Security Update for Microso... {4461631} Software 9/10/2019 10:00:00 AM 86bdbd3b-7461-4214-a2ba-244...
Security Update for Microso... {4475574} Software 9/10/2019 10:00:00 AM a56d629d-8f09-498f-91e9-572...

The approval and rejection of updates is an important part of managing Windows updates in the enterprise. The WSUS PowerShell module makes this easy to do. A few years ago, Microsoft began releasing preview updates for testing purposes. I typically want to decline these updates to avoid their installation on production machines. The following command finds every update with the string “Preview of” in the title and declines them with the Deny-PSWSUSUpdate cmdlet.

Get-PSWSUSUpdate -Update "Preview of" | Where-Object {$_.IsDeclined -eq 'False' } | Deny-PSWSUSUpdate
Patch IsDeclined
----- ----------
2019-08 Preview of Quality Rollup for .NET Framework 3.5.1 on Windows Server 2008 R2 for Itanium-based Systems (KB4512193) True
2019-08 Preview of Quality Rollup for .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 for Windows 7 (KB4512193) True
2019-08 Preview of Quality Rollup for .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 for Windows 7 and Server 2008 R2 for x64 (KB4512193) True
2019-07 Preview of Quality Rollup for .NET Framework 2.0 on Windows Server 2008 SP2 for Itanium-based Systems (KB4512196) True
2019-08 Preview of Quality Rollup for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 for Windows Server 2012 for x64 (KB4512194) True
2019-07 Preview of Quality Rollup for .NET Framework 2.0, 3.0, 4.5.2, 4.6 on Windows Server 2008 SP2 (KB4512196) True
2019-08 Preview of Quality Rollup for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 for Windows 8.1 and Server 2012 R2 for x64 (KB4512195) True
2019-07 Preview of Quality Rollup for .NET Framework 2.0, 3.0, 4.5.2, 4.6 on Windows Server 2008 SP2 for x64 (KB4512196) True

Syncing WSUS with Microsoft’s servers

In the WSUS GUI, users can set up a daily synchronization between their WSUS server and the Microsoft update servers to download new updates. I like to synchronize more than once a day, especially on Patch Tuesday when you may get several updates in one day. For this reason, you can create a scheduled task that runs a WSUS sync hourly for a few hours per day. The script can be as simple as this command below:

Start-PSWSUSSync
Synchronization has been started on wsus.

Performing cleanups

A WSUS server can be fickle. I have had to rebuild WSUS servers several times, and it is a pretty lengthy process because you have to download all the updates to the new server. You can avoid this process by running a cleanup on the WSUS server. The Start-PSWSUSCleanup cmdlet performs many of these important actions, such as declining superseded updates, cleanup of obsolete updates and removing obsolete computers:

Start-PSWSUSCleanup -DeclineSupersededUpdates -DeclineExpiredUpdates -CleanupObsoleteUpdates -CompressUpdates -CleanupObsoleteComputers -CleanupUnneededContentFiles
Beginning cleanup, this may take some time...
SupersededUpdatesDeclined : 223
ExpiredUpdatesDeclined : 0
ObsoleteUpdatesDeleted : 0
UpdatesCompressed : 4
ObsoleteComputersDeleted : 6
DiskSpaceFreed : 57848478722

Go to Original Article
Author:

For Sale – 2 X BNIB Lenovo Thinkstation P720 Workstations with 2 x Xeon Gold 5120T 14 core CPUs 64GB Ram, 256 GB NVMe SSD, 256GB SATA SSD, 2TB HD, Quadro P400.

I have two BNIB Thinkstation P720 Workstations each with 2 x Xeon Gold 5120T 14 core CPU’s, for a total of 28 cores 56 threads, 64GB 2666 DDR4 Ram, 256 GB NVMe SSD, 256GB SATA SSD, 2TB HD, Quadro P400. One only booted to BIOS to check spec the other booted to windows for benchmarking and can be seen in pics. Both under Warranty until 13/10/2021.
Current new price around £7000 each, Im asking £3500 each. Im located near Bishops Stortford, Hertfordshire.

,
Go to Original Article
Author:

Implement automated employee onboarding with PowerShell

One of those most common tasks help desk technicians and system administrators handle is provisioning all the resources to onboard new employees.

Depending on the organization, these tasks may include creating Active Directory user accounts, creating home folders, provisioning new Office 365 mailboxes and setting up a VoIP extension in the phone system. With a little PowerShell coding, you can put together an automated employee onboarding script that does a majority of this work in little to no time.

To automate this process, it’s essential to define all the tasks. Many companies have a document that outlines the steps to onboard a new employee, such as the following:

  • create an Active Directory user account;
  • create a user folder on a file share; and
  • assign a mobile device.

When building a PowerShell script, start by researching if the basics required for automation are available. For example, does the system you’re using to assign a mobile device have an API? If not, then it can’t be completely automated. Rather than bypass this step, you can still add something to your script that sends an email to the appropriate person to complete the setup.

For other tasks that PowerShell can automate, you can start by scaffolding out some code in your script editor.

Build the framework for the script

Start by adding some essential functions to encapsulate each task. The following code is an example of build functions for each of the tasks we want to automate.

param(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$CsvFilePath
)

function New-CompanyAdUser {
[CmdletBinding()]
param
(

)

}

function New-CompanyUserFolder {
[CmdletBinding()]
param
(

)

}

function Register-CompanyMobileDevice {
[CmdletBinding()]
param
(

)

}

function Read-Employee {
[CmdletBinding()]
param
(

)

}

This isn’t our final code. This is just a brainstorming exercise.

Add the code to receive input

Notice the param block at the top and the Read-Employee function. This function receives any type of input, such as a CSV file or database. When we create a function, it’s easy to modify the code if the method changes.

For now, we are using a CSV file to make the Read-Employee script below. By default, this function takes the CSV file path when the script runs.

function Read-Employee {
[CmdletBinding()]
param
(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$CsvFilePath = $CsvFilePath
)

Import-Csv -Path $CsvFilePath

}

Add a Read-Employee reference below this function.

We have a CSV file from human resources that looks like this:

FirstName,LastName,Department
Adam,Bertram,Accounting
Joe,Jones,HR

We’ll give the script a name New-Employee.ps1 with the CsvFilePath parameter.

./New-Employee.ps1 -CsvFilePath './Employees.csv'

Developing the functions

Next, fill in the other functions. This is just an example but should give you a good idea of how you could build your code for the specifics your automated employee onboarding script should have. For more information on the creation of the New-CompanyAdUser function, you can find more information at this blog post.

param(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$CsvFilePath
)

function New-CompanyAdUser {
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[pscustomobject]$EmployeeRecord
)

## Generate a random password
$password = [System.Web.Security.Membership]::GeneratePassword((Get-Random -Minimum 20 -Maximum 32), 3)
$secPw = ConvertTo-SecureString -String $password -AsPlainText -Force

## Generate a first initial/last name username
$userName = "$($EmployeeRecord.FirstName.Substring(0,1))$($EmployeeRecord.LastName))"

## Create the user
$NewUserParameters = @{
GivenName = $EmployeeRecord.FirstName
Surname = $EmployeeRecord.LastName
Name = $userName
AccountPassword = $secPw
}
New-AdUser @NewUserParameters

## Add the user to the department group
Add-AdGroupMember -Identity $EmployeeRecord.Department -Members $userName
}

function New-CompanyUserFolder {
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[pscustomobject]$EmployeeRecord
)

$fileServer = 'FS1'

$null = New-Item -Path "\\$fileServer\Users\$($EmployeeRecord.FirstName)$($EmployeeRecord.LastName)" -ItemType Directory

}

function Register-CompanyMobileDevice {
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[pscustomobject]$EmployeeRecord
)

## Send an email for now. If we ever can automate this, we'll do it here.
$sendMailParams = @{
'From' = '[email protected]'
'To' = '[email protected]'
'Subject' = 'A new mobile device needs to be registered'
'Body' = "Employee: $($EmployeeRecord.FirstName) $($EmployeeRecord.LastName)"
'SMTPServer' = 'smtpserver.something.local'
'SMTPPort' = '587'
}

Send-MailMessage @sendMailParams

}

function Read-Employee {
[CmdletBinding()]
param
(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$CsvFilePath = $CsvFilePath
)

Import-Csv -Path $CsvFilePath

}

Read-Employee

Calling the functions

Once you build the functions, pass each of the employee records returned from Read-Employee to each function, as shown below.

$functions = 'New-CompanyAdUser','New-CompanyUserFolder','Register-CompanyMobileDevice'
foreach ($employee in (Read-Employee)) {
foreach ($function in $functions) {
& $function -EmployeeRecord $employee
}
}

By standardizing the function parameters to have a single parameter EmployeeRecord which coincides to a row in the CSV file, you can define the functions you want to call in an array and loop over each of them.

Click here to download the code used in this article on GitHub.

Go to Original Article
Author:

Become a Jedi with Two New Star Wars Jedi: Fallen Order Bundles – Xbox Wire

May the Force be with you! As unveiled during Disney’s Star Wars Triple Force Friday Global Reveal Livestream, we’re excited to announce the Xbox One X Star Wars Jedi: Fallen Order bundle ($499.99 USD) and the Xbox One S Star Wars Jedi: Fallen Order bundle ($299.99 USD) coming on November 15, both available for pre-order today! Get ready to feel the Force in Star Wars Jedi: Fallen Order, a new third-person action-adventure title from Respawn Entertainment.

This narrative-driven, single-player game puts you in the role of a Jedi Padawan who narrowly escaped the purge of Order 66 following the events of “Star Wars: Episode III – Revenge of the Sith.” On a quest to rebuild the Jedi Order, you must pick up the pieces of your shattered past to complete your training, develop new powerful Force abilities, and master the art of the iconic lightsaber – all while staying one step ahead of the Empire and its deadly Inquisitors.

Along with an Xbox One console, each bundle comes packed with an Xbox Wireless Controller, a digital download of Star Wars Jedi: Fallen Order Deluxe Edition, a 1-month trial of Xbox Game Pass and a 1-month trial of Xbox Live Gold. Additionally, both Star Wars Jedi: Fallen Order bundles give you 1 month of EA Access, which lets you play EA games for a limited time before they’re released and get unlimited access to The Vault, a growing collection of EA’s best Xbox One games.

Xbox One is the only console system that plays the best games of the past, present and future with thousands of games available today – including over 200 exclusives and over 400 Xbox classics. If you’re playing on Xbox One X or Xbox One S, you can also enjoy the ultimate 4K entertainment experience with a built-in 4K UHD Blu-ray player, premium audio with Dolby Atmos support and the fastest, most reliable gaming network with Xbox Live.

Both the Xbox One X Star Wars Jedi: Fallen Order bundle and Xbox One S Star Wars Jedi: Fallen Order bundle are available for pre-order today. For more information on Xbox One or Star Wars Jedi: Fallen Order, visit xbox.com or a Microsoft Store near you or online, and be sure to keep up with the latest Star Wars Jedi: Fallen Order news right here on Xbox Wire.

The galaxy awaits, young Padawan!

Go to Original Article
Author: Microsoft News Center