我们正在将PowerShell 5.1升级到PowerShell 7的过程中,遇到了一些关于模块“ActiveDirectory”的问题。
Import-Module ActiveDirectory -SkipEditionCheck
$adGroup = New-Object Microsoft.ActiveDirectory.Management.ADGroup Identity -Property @{
Description = 'ROL group'
CanonicalName = 'contoso.com/Groups/test'
SamAccountName = 'test'
GroupCategory = 'Security'
GroupScope = 'Universal'
}
字符串
这会抛出两个错误:
无法从程序集"System. Management. Automation,Version=7.3.8.500,Culture=neutral,PublicKeyToken= 31 bf 3856 ad 364 e35“加载类型”System.Management.Automation.PSSnapIn“。New-Object:
找不到指定.NET对象的成员“Description”。
当我们用$adGroup | Get-Member
检查这个对象时,似乎属性Description
和CanonicalName
在这个对象上不可用。
在PowerShell 5.1中,这段代码可以正常工作。模拟在两个PowerShell版本中都工作的AD安全组的最佳方法是什么?
1条答案
按热度按时间olqngx591#
这可能不起作用,我没有一个环境来测试在这个时候的一天。
若要解决此问题并创建在两个PowerShell版本中都有效的脚本,您可以利用
System.DirectoryServices.AccountManagement
命名空间,它提供了一种更一致的方式来跨不同的PowerShell版本与Active Directory进行交互。下面是如何使用此命名空间创建新AD组的示例:字符串
使用
System.DirectoryServices.AccountManagement
命名空间有助于创建跨不同版本的PowerShell管理Active Directory的一致方法。在运行脚本之前,请确保您具有创建AD对象的必要权限。这种方法应该在PowerShell 5.1和PowerShell 7中无缝工作。