PowerShell版本与其管理Azure Active Directory的能力之间的区别是什么



Microsoft产品由于其糟糕的文档而给我带来了困难,PowerShell也不例外。到目前为止,我一直在使用不同版本的PowerShell,但我还远远不能理解不同的版本,尤其是在Azure方面。

据我所知,PowerShell 5已经停产,PowerShell ISE也是如此。根据微软的建议,我切换到了最新的版本7和Visual Studio代码。我不得不承认,他们合作得很好。(我仍然想知道为什么在Visual Studio中没有对开发PowerShell的本地支持。)

对于Azure,有Azure、AzureRM、msol和Az模块。后者显然是取代Azure和AzureRM的最新版本。正如我们所知,它们不能一起工作,不能向上/向下兼容,同时也不能提供相同的功能。

现在我想使用PowerShell将域添加到Azure Active Directory。我找到的唯一cmdlet是New-AzureAdDomain,它在PowerShell 7中不起作用。经过一番研究,我发现了这篇文章,它告诉我不能使用PowerShell 7,而是应该使用PowerShell 6:

对于Azure Active Directory PowerShell For Graph模块,您必须请使用PowerShell 5.1或更高版本。对于Microsoft Azure ActiveWindows PowerShell模块的目录模块,必须使用PowerShell版本5.1或更高版本,直至PowerShell版本6你不能使用PowerShell版本7。

对我来说,PowerShell版本及其Azure模块似乎一团糟。但我想这可能只是因为我不了解他们实际上应该如何合作。如果有人能告诉我这件事,我会很感激?起初,我的问题应该是";如何使用PowerShell 7"将域添加到AAD;但我希望能理解它背后的概念,也许这能让我帮助自己。

一团糟。首先,不要混淆WindowsPowershell和PowershellCore的版本。

Powershell 1.0-5.1都是WindowsPowershell,这意味着它们附带了Windows操作系统,只能在Windows上工作。

Powershell 6.0+是Powershell Core版本,它们还没有附带任何操作系统,并且是跨平台的。这两种类型可以在同一台Windows计算机上共存,因为它们甚至不对应用程序exe使用相同的名称。

他们为什么要把它们分开?嗯,在窗户上你有。NET Framework,这是一组用c#编写的库,您可以在应用程序中使用,这样您就不必为所有内容编写代码。然而,Net Framework只是Windows,所以它基本上将C#与Windows绑定在一起。微软意识到,为了让C#更有趣,他们必须让它跨平台,所以他们提出了Net Core。它是Net Framework的跨平台版本。可在Linux、MacOs和Windows上使用。Powershell是在Net Framework上构建的,因此他们看到了创建跨平台Powershell新版本的机会。因此WindowsPowershell是基于NetFramework的,Powershell核心是基于NetCore的。微软计划在5.0版中合并Net Framework和Net Core。不知道他们是否也想合并Powershell版本,但他们称之为Powershell 7,而不是像版本6那样称之为Powershell Core 7。

PowershellCore的主要问题是作为其他产品一部分的模块。服用SCCM、AD或其他药物。您可以通过拥有WindowsServer并安装这些功能来获得这些模块。或者在客户端机器上安装RSAT。这些模块中的大多数现在都在版本7中提供。

当涉及到Azure模块时,您可以从下载Azure模块https://github.com/Azure/azure-powershell/releases/latest并且您可以使用Powershell的任何一个版本。如果您特别需要AzureAD:https://learn.microsoft.com/en-us/powershell/azure/active-directory/install-adv2?view=azureadps-2.0

您可以在此处阅读有关Powershell的更多信息:https://devblogs.microsoft.com/powershell/announcing-PowerShell-7-0/

只是关于Azure模块的说明。随着资源管理器的加入,Azure经历了一个巨大的变化(有点像V1和V2)。旧的动词AzureNOUN库用于Resource Manager Azure之前的版本。动词AzureRMnoun版本只是用";AzureRM";前缀最新的动词AzNOUN版本是几乎与AzureRM版本一一匹配。所以主要是改名。

每个cmdlet库/模块都以PowerShell的某个版本为目标,因此在使用模块之前,请检查需要哪个版本。PowerShellCore版本仍然是一种";进行中的工作";查看Windows管理时。PowerShell 5.1仍然是我的";转到";版本,除非我在非Windows环境中工作。

最新更新