У меня есть сценарий PowerShell, который установит принтер TCP/IP на несколько компьютеров на основе ввода пользователем. Сценарий работал нормально, но мы хотели добавить его в защиту, чтобы пользователь не мог случайно установить принтер на объект на другом сайте в другой подсети.'Вы не можете вызывать метод в нулевом выражении' Ошибка
я добавил следующую функцию
### Function to compare subnet of Printer and Asset
Function CheckSubnet {
param ($PrinterIP, $ComputerName, $PrinterCaption)
$Printer = Test-Connection -ComputerName $PrinterIP -Count 1
$PrintIP = $Printer.IPV4Address.IPAddressToString
$IPSplit = $PrintIP.Split(".")
$PrinterSubnet = ($IPSPlit[0]+"."+$IPSplit[1]+"."+$IPSplit[2])
$getip = Test-Connection -ComputerName $ComputerName -Count 1
$IPAddress = $getip.IPV4Address.IPAddressToString
$AssetIP = $IPAddress.Split(".")
$AssetSubnet = ($AssetIP[0]+"."+$AssetIP[1]+"."+$AssetIP[2])
If ($PrinterSubnet -ne $AssetSubnet){
Write-Host $ComputerName 'is not on the same subnet as ' $PrinterCaption
$UserInput = Read-Host 'do wish to install anyway? Y/N'
If ($UserInput -eq "Y") {
} Else {
Continue
}
} Else {
}
}
Теперь, когда я запускаю скрипт я получаю следующее возвращаемой ошибки
You cannot call a method on a null-valued expression.
At C:\Users\sitblsadm\Desktop\Untitled1.ps1:28 char:1
+ $IPSplit = $PrintIP.Split(".")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Cannot index into a null array.
At C:\Users\sitblsadm\Desktop\Untitled1.ps1:29 char:1
+ $PrinterSubnet = ($IPSPlit[0]+"."+$IPSplit[1]+"."+$IPSplit[2])
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Я понимаю, нулевой массив из-за $IPSplit
не присваивается значением, Но мое понимание того, что вы не можете вызвать метод в значении с нулевым значением, состоит в том, что ему ничего не назначено, но в этом случае я пытаюсь присвоить ему значение.
do $ PrintIP содержит значение? –
Возможный дубликат [Вы не можете вызвать метод с нулевым выражением - общий] (http://stackoverflow.com/questions/31335195/you-cannot-call-a-method-on-a-null-valued- expression-general) –