0

我的输出有问题;我想再看看另一种让我的输出没有返回或新行的方法。

有人可以帮我看看吗?

$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=Workstations");

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher;
$objSearcher.SearchRoot = $objDomain;
$objSearcher.PageSize = 100000;
$objSearcher.SearchScope = "Subtree";

$dateMonth = Get-Date -Format "MM";
$dateDay = Get-Date -Format "dd";
$dateYear = Get-Date -Format "yyyy";

$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll();

foreach ($objResult in $colResults)
    {

        $objItem = $objResult.Properties; 

        $computer = $objItem.name | Select-String -Pattern 'NSC';


        Write-Host $computer;

        #Add-Content "C:\PowerShell\Reports\Computer Report - $dateMonth-$dateDay-$dateYear.csv" "$computer";
    }

示例输出:



NSCNPR02





NSCNPR05

NSCNPR01


NSCNPR03

预期输出:

NSCNPR03
NSCNPR05
NSCNPR01
NSCNPR03
4

3 回答 3

0

Add-Content 添加新行。作为一种解决方法,您可以将文本输出到字符串中,然后在循环完成后将其写入文件中。

于 2013-06-14T16:42:53.983 回答
0

试试这个:

$date = Get-Date -Format "MM-dd-yyyy"
$filename = "C:\PowerShell\Reports\Computer Report - $date.csv"

...

$objSearcher.FindAll() | ? {
  $_.Properties.Name -like 'NSC*'
} | Add-Content $filename

你的代码的问题是

Add-Content "C:\Pow...csv" "$computer"

总是添加一个新行,即使$computeris $null。这种行为是由于$computer. 没有它们,问题就不会存在(但我的建议仍然是更清洁的解决方案;)。

于 2013-06-14T17:38:33.797 回答
0

您可以使用 LDAP 过滤而不是提取所有记录然后搜索吗?

代替

"LDAP://OU=Workstations"

采用

"LDAP://OU=Workstations?(&(objectCategory=computer)(name=NSC*))"

更多信息:http ://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

于 2013-06-15T07:06:59.163 回答