活动目录模块

时间:2016-01-04 13:49:16

标签: powershell active-directory

我编写了一个PowerShell脚本,一个允许PC Refresh在AD对象上设置CompanyDepartmentNumber等的应用程序。在开发everthing工作正常。显然我在我的机器上安装了AD。我已将我的应用程序编译为.exe并将其放在网络共享中,技术人员将在那里执行它,因为他们启动新计算机或从Windows 7主要刷新到Windows 10。

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

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

$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"
    }
  }

3 个答案:

答案 0 :(得分:2)

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

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。在安装AD PowerShell cmdlet之前,需要先安装correct RSAT package。但是知识库文章中的链接列表有点过时了。 Windows 10 Preview RSAT包的链接不再起作用。 Here是发布版本的下载链接。

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

dism /Online /Enable-Feature /FeatureName:RemoteServerAdministrationTools-Roles-AD-Powershell

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

$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,否则模块将无法正常工作(如果你甚至可以在第一时间安装它。)

答案 1 :(得分:1)

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

Add-WindowsFeature RSAT-AD-PowerShell

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

Add-WindowsFeature net-framework-core

答案 2 :(得分:0)

虽然您可以在这些计算机上安装Active Directory只是为了运行您的代码,但我建议您建立一个已经安装了它的计算机的会话。如果技术人员亲自动手并拥有访问AD的凭据,那么这将更好。

$Session = New-PSSession -ComputerName DC -Credential (Get-Credential) -Name AD
Enter-PSSession -Session $Session
Import-Module ActiveDirectory
Doing-AD -Stuff
...
Disconnect-PSSession

使用这种方法,将提示Tech获取其凭据,脚本将运行您的AD内容,并且客户端计算机无法启用或安装RSAT工具。