小编Bar*_*Vos的帖子

转到ForEach-Object中的下一个项目

我有一个PowerShell脚本,可以对许多域中的所有域管理员进行一些检查.对于每个用户帐户,执行了许多检查.当其中一个失败时,脚本应该转到列表中的下一个管理员.

我目前有类似的东西(简化):

Get-QADGroupMember "Domain Admins" | Select-Object SamAccountName | ForEach-Object {

    #Do something
    if(!ThisCheckIsOK)
    {
        break;
    }

    #Do something else
    if(ThisCheckIsNotOK)
    {
        break;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

这会停止整个脚本.有没有办法去下一个元素?

$foreach.movenext()因为不工作$foreachnull.

powershell

24
推荐指数
2
解决办法
10万
查看次数

如何在没有"#TYPE"行的情况下使用PowerShell输出CSV?

这与另一篇文章有​​关.我写了以下脚本:

Get-ADUser -Filter * -SearchBase 'DC=aaaa,DC=com' | Export-CSV "ADUsers.csv"
Run Code Online (Sandbox Code Playgroud)

这会输出一个CSV文件,但在文件的第一行显示:

#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser"
Run Code Online (Sandbox Code Playgroud)

当它试图读取它时,这会弄乱SSIS.有没有办法不添加第一行?

powershell

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

DirectoryServices 过滤器和方法

我正在尝试从 AD 获取 OU/DC 中所有用户的列表。

这就是我想出的:

$erroractionpreference = "SilentlyContinue"
function Get-GroupMembers {
    $filter = "(&(objectCategory=person)(objectClass=user))"
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.Filter = $filter
    $colResults = $objSearcher.FindAll()

        foreach ($member in $colResults) { 
            $member
        }
}
get-GroupMembers 
Run Code Online (Sandbox Code Playgroud)

如果我将过滤器更改为

    $filter = "(&(objectCategory=person)(objectClass=user)("OU=Admin Accounts,DC=admin"))
Run Code Online (Sandbox Code Playgroud)

什么都没有返回。为什么是这样?
我还想显示某些值(如果帐户处于活动状态或禁用状态等),但如果我通过管道连接$membergm,我什么也得不到。

任何帮助将不胜感激。

powershell active-directory windows-server-2008-r2

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