2014-01-06 33 views
0

我有一個腳本,它返回AD中計算機列表的位置。這適用於我當前的域名,如果我指定「-generoot」,它適用於其他域名。無法捕獲PowerShell腳本中的錯誤,同時使用任務活動角色來查詢活動目錄

如果我查詢計算機不在正確的域上,使用'get-qadcomputer'它不會將任何信息返回到控制檯,因此需要一種方法來捕獲並嘗試替代方法?

我已經試過這一點,這只是工作在DC =域1(我當前域)的所有計算機:

Add-PSSnapin Quest.ActiveRoles.ADManagement 
$strPath = "C:\sample.xlsx" 

$objExcel = new-object -ComObject Excel.Application 
$objExcel.Visible = $false 
$WorkBook = $objExcel.Workbooks.Open($strPath) 
$worksheetIn = $workbook.sheets.item("Asset") 
$worksheetOut = $workbook.sheets.item("Asset") 
$intRowMax = ($worksheetIn.UsedRange.Rows).count 
$Columnnumber = 1 

For($intRow = 2 ; $intRow -le $intRowMax ; $intRow++) { 
Try 
{ 
$name = $worksheetIn.cells.item($intRow,$ColumnNumber).value2 
"Querying $name...$introw of $intRowMax" 
$OU = Get-QADcomputer -searchroot 'OU=Workstations,DC=DOMAIN1'-LdapFilter "(CN=$Name)"` 
| ft Location -HideTableHeaders 
$Out = Format-list -InputObject $OU | out-string 
$worksheetOut.cells.item($intRow,6) = "$Out" 
    } 
Catch 
    { 
$name = $worksheetIn.cells.item($intRow,$ColumnNumber) 
"Querying $name...$introw of $intRowMax" 
$OU = Get-QADComputer -SearchRoot 'OU=Workstations,DC=DOMAIN2' -LdapFilter (CN=$Name)"` 
| ft Location -HideTableHeaders 
$Out = Format-list -InputObject $OU | out-string 
$worksheetOut.cells.item($intRow,6) = "$Out" 
    } 
} 
$objexcel.save() 
$objExcel.workbooks.close() 
$objexcel.application.quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Workbook) 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) 
Remove-Variable objExcel 

回答

0

您可以檢查是否$OU等於$null。我懷疑它只是沒有找到任何東西,如果你沒有錯誤文本或它不會帶你到捕獲處理程序。另一個選項是在調用Get-QADComputer的行後檢查$?,但我懷疑你會變爲True(命令成功)。但是,如果你得到假,那麼這就告訴你它沒有成功。