标签: powershell

PowerShell:如何_exclusively_检索特定属性

我怎样才能检索到一个特定的属性完全?

我知道select-objectcmdlet 在这方面似乎有些过时:

PS C:\> Get-ADOrganizationalUnit -SearchBase 'OU=Houston,DC=contoso,DC=net' -Filter 'Name -like "SomeOU"' -Properties * | Select-Object Description,Streetaddress,State,postalcode | format-list
Run Code Online (Sandbox Code Playgroud)

一个优化的版本是:

PS C:\> Get-ADOrganizationalUnit -SearchBase 'OU=Houston,DC=contoso,DC=net' -Filter 'Name -like "SomeOU"' -Properties Description,Streetaddress,State,postalcode
Run Code Online (Sandbox Code Playgroud)

为什么-property开关不仅仅返回输入的属性?

powershell active-directory

3
推荐指数
2
解决办法
1033
查看次数

PowerShell AD LDS 查询和过滤器使用通配符未按预期运行

我是一个学习管理系统网站的管理员,该网站将其页面结构存储在 AD LDS 中。我正在尝试运行查询以获取与distinguishedName 过滤器匹配的对象(站点上的页面)。我的过滤器没有按预期运行。

下面是三个查询,除了过滤器参数外,所有查询都相同。这并不完全是我想要做的,但出于演示目的,这将说明我的问题。

这有效(返回大量结果):

Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'distinguishedName -like "*"'
Run Code Online (Sandbox Code Playgroud)

这也有效,(返回单个结果):

Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'distinguishedName -like "CN=LEC,CN=Academics,CN=Portal,O=Jenzabar,C=US"'
Run Code Online (Sandbox Code Playgroud)

但是,这没有返回任何结果,我不明白为什么:

Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'distinguishedName -like "C*"'
Run Code Online (Sandbox Code Playgroud)

据我所知,第三个查询应该返回第一个查询的所有结果,它至少应该返回第二个查询的单个结果。任何帮助,将不胜感激!

powershell ad-lds

3
推荐指数
1
解决办法
6223
查看次数

PowerShell Get-ADObject 和 Set-ADObject 的 Active Directory 模块不适用于自定义属性

我正在尝试使用适用于 PowerShell 的 Active Directory 模块在我未创建的 AD LDS 实例中使用自定义属性。不幸的是,cmdlet Get-ADObject 和 Set-ADObject 没有返回我预期的结果。事实上,任何使用 PowerShell 语言的参数都不适用于此属性。自定义属性的 LDAP 显示名称为“jenzabar-ICSNET-GenericFlags”。

如果我在 Where-Object 参数中使用自定义属性,则 Get-ADObject 不会返回任何结果,即使我知道有很多对象将此自定义属性设置为该值:

Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' | Where-Object {$_.'jenzabar-ICSNET-GenericFlags' -eq '1'
Run Code Online (Sandbox Code Playgroud)

但是,如果我在过滤器参数中使用自定义属性,则会看到预期的结果列表:

Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'jenzabar-ICSNET-GenericFlags -eq 1'
Run Code Online (Sandbox Code Playgroud)

此外,如果我使用该查询并从结果中选择 jenzabar-ICSNET-GenericFlags,那么即使我得到结果,显示自定义属性的列也是空的。该列甚至不显示方括号 {},就好像我选择了一个未知属性。列中根本没有任何内容。

最后,用于替换自定义属性值的 Set-ADObject 似乎无声无息地失败了。此查询不会产生错误或其他消息,但无法修改自定义属性:

Set-ADObject -Server 'localhost:389' -Identity 'CN=Overview,OU=Pages,CN=2014 JA-WTC  600-05,CN=WTC  600,CN=WTC,CN=Academics,CN=Portal,O=Jenzabar,C=US' -Replace @{'jenzabar-ICSNET-GenericFlags'='0'}
Run Code Online (Sandbox Code Playgroud)

我知道必须有一些关于我可以在哪些属性上使用 Get-ADObject 和 Set-ADObject cmdlet 的规则,但我不知道这些规则是什么。我不知道如何确定这个自定义属性是什么类型的属性。未安装 Active Directory 架构。

提前致谢。

powershell ad-lds

3
推荐指数
1
解决办法
1171
查看次数

导出 AD 中多个 OU 中所有计算机的简单列表

我有一个程序,可以根据文本文档选择要连接的计算机。该列表只需要包含计算机名称,每行 1。没有其他的。

我需要一个我可以运行的命令或脚本来产生这个。我想每周自动运行一次此脚本以使用新计算机更新列表。服务器正在运行 Windows Server 2008 R2。我已经安装了 Quest AD 模块,但我没有找到太多使用它的帮助。

任何帮助,将不胜感激!谢谢 :)

windows powershell active-directory

3
推荐指数
2
解决办法
6万
查看次数

如何查看邮箱导出请求失败的原因?

我正在尝试将一堆邮箱导出到 PST 文件,并且一些请求在失败时提前终止。

几个 5GB+ 的邮箱成功了,几个非常小的邮箱失败了,我看不出它们之间有什么共同之处......

表演get-mailboxexportrequest只显示名称/邮箱/状态和状态只能说明Queued/ Completed/Failed

我尝试了各种开关和命令,但似乎找不到比上述更多的细节。

我想知道是否有人知道命令以便我可以详细查看失败消息?

powershell exchange export mailbox

3
推荐指数
1
解决办法
4万
查看次数

当我使用 Powershell 将用户添加到安全组时,他们不会出现在 AD 中

我有一个脚本,其中包含以下用于在 Powershell 中使用 CSV 文件添加用户的脚本。Windows Server 2008 R2。

看起来像这样:

Import-Csv "C:\Users\me\Desktop\users.csv" | Where-Object {$_.Name} |`
 ForEach-Object {`
New-ADUser `
-Name $_."Name" `
-GivenName $_."GivenName" `
-Surname $_."Surname" `
-Description $_."Department" `
-SamAccountName $_."Logon_Username" `
-UserPrincipalName $_."UPN" `
-DisplayName $_."Display_Name" `
-AccountPassword (ConvertTo-SecureString -AsPlainText "P@ssw0rd1!" -Force) `
-Path "OU=Users,OU=Head Office,OU=International,DC=company,DC=com" `
-ChangePasswordAtLogon $true `
-Enabled $true | Enable-ADAccount | `
Add-ADGroupMember "QA_Users" $_."Logon_Username";
}
Run Code Online (Sandbox Code Playgroud)

脚本成功通过,没有错误,并添加了用户。当我转到 AD 用户和计算机时,我可以看到正确添加的用户。但是,当我转到“成员”部分时,它不会显示脚本中指定的组。

我注意到,如果我尝试通过 powershell 使用 add-adgroupmember 再次手动添加用户,命令会显示“用户已经是指定组的一部分”。

我注意到如果我等待大约 15-20 分钟,那么该组就会出现。有人能帮我吗?谢谢!

powershell windows-server-2008 active-directory windows-server-2008-r2

3
推荐指数
1
解决办法
420
查看次数

Exchange 2010 地址位置

有人能告诉我 Exchange 2010 在哪里存储电子邮件地址信息吗?它是否从 ActiveDirectory 中的 proxyAddresses 属性移出?“(Get-Mailbox).EmailAddresses”是否提供与“Get-AdUser -Propery proxyAddresses”相同的信息?我试过查找这个,但只是不断获取指向“Get-Mailbox”或“Get-Recipient”不同调用的链接。我想让这个脚本保持简单,如果不需要的话,不需要安装 Exchange 工具。

powershell exchange active-directory exchange-2010

3
推荐指数
1
解决办法
56
查看次数

使用powershell仅删除留下空子文件夹的文件

C:\Temp\ifc 里面有大约 297 个文件夹,其中散布着大约 410 万个文件。

使用我在本网站其他地方找到的脚本,我编写了以下内容来删除所有超过 1 小时的“文件”。

$TargetFolder = “C:\Temp\ifc”
$NumberRange = "-1"
Get-ChildItem $TargetFolder -Recurse | Where {$_.lastwritetime -lt (Get-Date).AddHours($NumberRange)} | Remove-Item
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它也在删除子文件夹(如果这些文件夹最终没有文件)。

我可以添加什么以便它保留文件夹结构?

非常感谢。

powershell powershell-v4.0

3
推荐指数
1
解决办法
2417
查看次数

如何强制客户端在 SCCM 中更新其 IP 地址?

我正在测试我需要在组织中移动的机器的一些网络问题,这使机器更改其 ip。

SCCM需要更新这个ip(图中高亮部分)才能联系到机器,问题是我的环境太大了,运行一个完整的机器发现需要4个多小时。

有通过powershell或其他工具更新机器ip的更快方法吗?

在此处输入图片说明

powershell sccm

3
推荐指数
1
解决办法
1万
查看次数

检查托管服务帐户安装位置的支持方法是什么?

我创建了一个托管服务帐户(不是 gMSA)并使用 Install-ADServiceAccount 将其安装在 2012 服务器上。

现在我希望能够检查我的 MSA 的安装位置(在整个域中)

查看 MSA 属性,我在任何地方都看不到服务器名称。

查看服务器的属性,我在 msDS-HostServiceAccount 下看到了服务帐户。

搜索计算机帐户的 msDS-HostServiceAccount 属性是否是跟踪 MSA 安装位置的正确方法?

windows powershell active-directory windows-server-2012 windows-server-2012-r2

3
推荐指数
1
解决办法
3620
查看次数