Не имея большой удачи в моем сценарии Powershell, так что любая помощь будет замечательной! То, что я пытаюсь сделать, это ссылаться на тестовый файл, содержащий строки имен пользователей, и сравнивать его с таблицей Excel в столбце A1. Если существует, он должен затушить имя пользователя.Вы не можете вызвать метод в нулевом выражении
$users = Get-Content "E:\temp\test.txt"
foreach ($user in $users) {
set-aduser $user -fax " "
$answer1 = read-host "Please Make a Selection"
if ($answer1 -eq 1){
$location="Melbourne"
}
if ($answer1 -eq 2){
$location="Sydney"
}
if ($answer1 -eq 3){
$location="Adelaide"
}
if ($answer1 -eq 4){
$location="Brisbane"
}
if ($answer1 -eq 5){
$location="Perth"
}
$ExcelPath = 'E:\temp\FX MFD UserPIN.xlsx'
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$ExcelWorkBook = $Excel.Workbooks.Open($ExcelPath)
$ExcelWorkSheet = $Excel.WorkSheets.item("$location")
$Range = $ExcelWorkSheet.Range("A1").EntireColumn
$Search = $Range.find($user)
If($Search.value() -contains $user)
{
Write-Host "User FOUND, removing now"
$Search.value() = ""
}
else {
Write-Host "User NOT FOUND"
}
}
Код ошибки заключается в следующем:
You cannot call a method on a null-valued expression.
At E:\temp\testsest.ps1:35 char:12
+ If($Search.value() -contains $SearchString)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Как заменить $ Поиск получить $ пользователю?
выглядит как $ Range.find ($ user) возвращает null. Вы должны проверить это или предоставить часть своего листа excel. –
Отметьте сообщение от Vesper об исключении выражения с нулевым значением: http://stackoverflow.com/questions/31335195/you-cannot-call-a-method-on-a-null-valued-expression-general –