首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Active Directory模块

Active Directory模块
EN

Stack Overflow用户
提问于 2016-01-04 21:49:16
回答 3查看 9.7K关注 0票数 0

我已经编写了一个PowerShell脚本,这是一个允许PC刷新在AD对象上设置CompanyDepartmentNumber等的应用程序。在开发中,一切都运行得很好。显然,我的机器上安装了AD。我已经将我的应用程序编译为.exe,并将其放在网络共享上,技术人员在启动新电脑或主要从Windows7更新到Windows10时,将从那里执行它。

问题是新PC此时不会安装Active Directory。我需要找到一种方法来安装我的应用程序,导入并运行Active Directory,就像启动新的或更新的计算机一样。我该如何做到这一点?

下面是我用来导入模块的相关代码,如果它存在于机器上的话。

代码语言:javascript
复制
$RestoreForm_Load = {
  # Load the ActiveDirectory module if it's available
  # Check if the ActiveDirectory module is installed
  if ((Get-Module -ListAvailable | where { $_.Name -eq 'ActiveDirectory' }) -eq $null) {
    $labelDialogRedRestore.Text += "You need to install the ActiveDirectory module!`n"
  } else {
    # Check if the ActiveDirectory module is allready Imported
    if ((Get-Module ActiveDirectory) -eq $null) {
      Import-Module ActiveDirectory -ErrorAction 'SilentlyContinue'
      $labelDialogGreenRestore.Text += "ActiveDirectory module imported`n"
    } else {
      $labelDialogGreenRestore.Text += "ActiveDirectory allready imported`n"
    }
  }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-04 22:26:17

您可以使用以下命令在脚本中安装该模块:

代码语言:javascript
复制
Add-WindowsFeature RSAT-AD-PowerShell

请注意,此功能还需要.NET框架3.5.1功能,可以使用以下命令进行安装:

代码语言:javascript
复制
Add-WindowsFeature net-framework-core
票数 1
EN

Stack Overflow用户

发布于 2016-01-05 01:11:38

只有Windows Server版本具有AD模块或RSAT (远程服务器管理工具)的任何其他部分,可用于开箱即用安装。您可以使用Add-WindowsFeature (或Install-WindowsFeature,在Windows2012及更高版本中取代前者)在服务器上安装模块:

代码语言:javascript
复制
Import-Module ServerManager

$os = (Get-WmiObject Win32_OperatingSystem).Caption
switch -wildcard ($os) {
  'Windwos Server 2008*' {
    Add-WindowsFeature RSAT-AD-PowerShell -IncludeAllSubFeatures
  }
  'Windows Server 2012*' {
    Install-WindowsFeature RSAT-AD-PowerShell -IncludeAllSubFeatures
  }
}

Windows客户端版本不附带RSAT。您需要先安装correct RSAT package,然后才能安装AD PowerShell cmdlet。不过,知识库文章中的链接列表有点过时。Windows 10预览版RSAT包的链接不再起作用。Here是发布版本的下载链接。

在客户端上安装更新后,您可以例如通过dism安装该模块

代码语言:javascript
复制
dism /Online /Enable-Feature /FeatureName:RemoteServerAdministrationTools-Roles-AD-Powershell

请注意(至少在客户端版本上)不同版本的功能名称可能不同(该功能在Windows7RSAT中命名为RemoteServerAdministrationTools-Roles-AD-Powershell,但在Windows10RSAT中命名为RSATClient-Roles-AD-Powershell ),因此您可能还需要在客户端上使用switch语句:

代码语言:javascript
复制
$os = (Get-WmiObject Win32_OperatingSystem).Caption
$name = switch -wildcard ($os) {
  'Windows 7*'  { 'RemoteServerAdministrationTools-Roles-AD-Powershell' }
  'Windows 8*'  { '???' }
  'Windows 10*' { 'RSATClient-Roles-AD-Powershell' }
}

& dism /Online /Enable-Feature /FeatureName:$name

此外,请注意,无论您在哪个系统(服务器或客户端)上安装模块,都必须安装.NET framework 3.5.1或4.5,否则模块将无法工作(如果您一开始就可以安装它的话)。

票数 2
EN

Stack Overflow用户

发布于 2016-12-20 23:13:55

虽然您可以在这些计算机上安装Active Directory来运行您的代码,但我建议您在已经安装了Active Directory的计算机上设置一个会话。如果技术人员亲力亲为,并且拥有访问AD的凭证,那么这将会更好地工作。

代码语言:javascript
复制
$Session = New-PSSession -ComputerName DC -Credential (Get-Credential) -Name AD
Enter-PSSession -Session $Session
Import-Module ActiveDirectory
Doing-AD -Stuff
...
Disconnect-PSSession

使用这种方法,技术人员将被提示输入他们的凭据,脚本将运行您的AD内容,并且客户端计算机将不会启用或安装RSAT工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34592650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档