【问题标题】:I prompt the user for a computer name during the WinPE phase of OSD我在 OSD 的 WinPE 阶段提示用户输入计算机名称
【发布时间】:2020-01-07 17:07:41
【问题描述】:

在 OSD 部署的 WinPE 阶段,我启动了一个表单供用户输入计算机名称。部分 PS 脚本需要导入 ActiveDirectory 模块,但我无法导入 AD 模块。

Import-Module (Join-Path $(Split-Path $env:SMS_ADMIN_UI_PATH) ConfigurationManager.psd1)
Import-Module ActiveDirectory
文件名设置-OSDComputerNamePrompt-TST.ps1 下面是我要添加的数组之一
Import-Module ActiveDirectory
$ADSites = (Get-ADReplicationSite -filter *).Name

我已将 PowerShell 模块添加到 Boot.Wim 文件中,并复制了

Prompt for Computer Name form

【问题讨论】:

标签: powershell sccm winpe


【解决方案1】:

WinPE 不是普通的 Windows,而且 Active Directory 命令行开关非常特殊(它们需要设置才能在非服务器操作系统上工作),所以这是一个糟糕的组合。

正如 iRon 评论的那样,有一些方法可以包含这个,但这些总是不受支持的 hack。如果 PE 版本发生变化,可能是它必须使用不同的文件来完成,或者可能是新版本完全破坏了 hack。对于 OSD,您不应该依赖这样的东西。 (我不知道您的特定 AD 设置,但对于他们中的大多数人来说,在脚本中硬编码域名并在每个站点添加时更新脚本要比始终跟上 PE 更改的工作要少得多。每年设计 3 次)

所有与 AD 相关的东西在没有模块的情况下工作的后备将是 adsi,它可以在 PE 中工作(为了使 Powershell 正常工作,您必须更改启动映像,但这些更改受 SCCM 支持,因此它们不提供额外的工作关于发布更改,您可能已经这样做了)

使用 adsi,您可以像这样获得您的网站列表:

$sitesDN = "LDAP://CN=Sites," + $([adsi] "LDAP://RootDSE").Get("ConfigurationNamingContext")
$ADSites = (([adsi]$sitesDN).psbase.children | where {$_.Objectclass -ieq "site"}).Name

附带说明:我假设您有不同的站点需要此代码。如果这是这种方法将成为“黄金标准”的情况之一,因为无论广告设置如何它都可以工作,但您个人只有一个不太可能改变的网站(就像很多人可能有的那样)我建议不要如此复杂的解决方案,即使它是故障安全的并且只是硬编码名称。 PE 有很多特殊情况,有时很难调试,因此请尽可能降低复杂性(当然,只要它让您保持同样的便利)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2010-11-29
    • 2012-10-28
    • 1970-01-01
    相关资源
    最近更新 更多