2017-05-04 10 views
0

私たちのアクティブディレクトリに、当社の経営者フィールドを更新し、ここでは、このPowerShellの一括更新、Active Directoryの管理者フィールド

Firstname.LastnameEmployee;firstname.lastnameManager 

は、私が使用しているスクリプトであるように、入力ファイルが見えスクリプト を持ってしようとしています。 .. これは私が得るエラーです

ヌル値の式でメソッドを呼び出すことはできません。ラインで :26文字:5 + $ ObjSearchemployee.Filter =「(&(objectCategoryの=人)(objectClassの=ユーザー)(SAM ... + ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ + CategoryInfo:はInvalidOperation:(:) []、RuntimeExceptionが + FullyQualifiedErrorId:。InvokeMethodOnNull

あなたがnull値の表現上のメソッドを呼び出すことはできません 行:31文字:9 + $ ObjSearchmanager.Filter =「(&(objectCategoryの=人)(objectClassの=ユーザー)(... + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~CategoryInfo:はInvalidOperation:(:) []、RuntimeExceptionが + FullyQualifiedErrorId:あなたはあなたの元の例のように、 "従業員" の列ヘッダを持っていないので、InvokeMethodOnNull

############################################################### 
# Update_Manager_v1.0.ps1 
# input : n/a 
# output : none (logs) 
# Version 1. 
# Changelog : n/a 
# MALEK Ahmed - 02/06/2013 
################### 

################## 
#--------Config 
################## 
$adPath="LDAP://DC=local,DC=com" 


################## 
#--------Main 
################## 
#LDAP connection 
$objDomain=New-Object System.DirectoryServices.DirectoryEntry($adPath) 
#Doing an LDAP search 
$ObjSearchemployee=New-Object System.DirectoryServices.DirectorySearcher($ObjDomain) 
$ObjSearchmanager=New-Object System.DirectoryServices.DirectorySearcher($ObjDomain) 
#Operations on user accounts 
Import-Csv .\input.csv -Delimiter ';' | Foreach-Object { 
    $ObjSearchemployee.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName="+ $_.employee.trim() +"))" 
    $allSearchResultemployee = $ObjSearchemployee.FindAll() 
    foreach ($objSearchResultemployee in $allSearchResultemployee) 
    { 
     $objUseremployee=New-Object System.DirectoryServices.DirectoryEntry($objSearchResultemployee.Path) 

     $ObjSearchmanager.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName="+ $_.manager.trim() +"))" 
     $allSearchResultmanager = $ObjSearchmanager.FindAll() 
     foreach ($objSearchResultmanager in $allSearchResultmanager) 
     { 
      $objUsermanager=New-Object System.DirectoryServices.DirectoryEntry($objSearchResultmanager.Path) 
      $objUseremployee.manager = $objUsermanager.distinguishedname 
     } 
     $objUseremployee.CommitChanges() 
     "" + $objUsermanager.displayName + " is now the manager of " + $objUseremployee.displayName + "" 
    } 
} 
+0

と同じ問題を抱えているだろう示唆しています。それがエラーを起こす理由です。 – Matt

答えて

0

$.Employee.trim()問題です。 You cannot call a method on a null-valued expressionを参照してください。

最初の列がsamaccountnameの場合、それを$_.Firstname.LastnameEmployee.trim()に変更する必要があります。それ以外の場合は、検索の仕方を再定義するか、ソースファイルを更新して関連情報を含むようにしてコードを一致させる必要があります。エラーとして

は、あなたがあなたのソースファイルで従業員と呼ばれるヘッダを持っていけない$_.Manager.trim()

関連する問題