2017-10-11 9 views
-1

割り当て時にヌル配列にインデックスできませんか?

これについて - これは就業時間前です。私はこれを実行すると、私はここで検索するとき

は、だから私は、

Cannot index into a null array. 
At line:3 char:15 
+ $backlog[0]=$(Get-DFSRBacklog -sourcecomputername:ts-fileshares2 -destinationcom ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
    + FullyQualifiedErrorId : NullArray 

発行されて取得し、他の場所で、私は、変数TO NULL配列を割り当てる問題を作る人を見つけます。配列に割り当てません。以下は

は(私は、複数のファイル共有に対して、6行にサーバー名を変更するのが面倒、これを実行しているコードの大部分である。通常、バックログが[]の回答の6セットが含まれています。

clear-host 
$backlog[0]=$(Get-DFSRBacklog -sourcecomputername:a -destinationcomputername:b -Verbose) 4>&1 

#$collection is one array result. This will be easier to split out into by-server later. 
[int]$total = 0 
foreach ($collection in $backlog) 
{ 
    $collection | ForEach-Object -Process { 
     if ($_.getType().FullName.equals("System.Management.Automation.VerboseRecord")) 
     { 
      #$_ | Get-Member 
      #Write-Host $_.Message 
      if ($_.Message -like "*has a backlog*") 
      { 
       #testing write-host $_.Message.split(" ")[12] 
       $total += [convert]::ToInt32($_.Message.split(" ")[12],10) 
      } 
     } 
    } 
} 
#testing Write-Host $total 
[Environment]::SetEnvironmentVariable("TOTALFILESHAREBACKLOG",$total, "Machine") 
#testing Write-Host $env:TOTALFILESHAREBACKLOG 

私が言ったように、これは作業時間前です。私は変わった変数が残っているかどうかはわかりませんが、これはプロダクトサーバ(プロダクトサーバ以外からDFSRバックログを取得する方法はありません)にあるため、サーバ全体をリブートしたくありません。

これはスケジュールで実行されている署名入りのPowerShellスクリプトです(zabbixは後でenv変数をプルする)が、影響を与えてはならない。この作業と作業との間で変更されたものは、このファイルが保存された場所に移動していました。

Powershell Get-DFSRBacklogは常に値を返すか、エラーを出力します。そうではありません。

$ backlog [0] = 1を実行してもエラーが発生します。

P.P.S.

Name       Value                     
----       -----                     
PSVersion      4.0                     
WSManStackVersion    3.0                     
SerializationVersion   1.1.0.1                    
CLRVersion      4.0.30319.42000                  
BuildVersion     6.3.9600.17400                   
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0}                 
PSRemotingProtocolVersion  2.2 
+0

"*通常、backlog []には6セットの返信が含まれていますが、この場合は' $ null'です。 '$ backlog'はどこで定義されていますか? – TessellatingHeckler

+0

作成され、割り当てられているので、定義されていますか?これはスクリプトの全体です(バックログに5つの他の回答セットがあるのとは別に) – Adonalsium

+1

それがスクリプト全体であれば、 '$ x [0] = 1' hasn '変数をゼロから定義する有効な方法でした。最初の定義では、 '$]($ DFSRBacklog -sourcecomputername:a -destinationcomputername:b -Verbose)4>&1'と' [] 'を指定する必要があります。いったん配列になると、それを '[0]'できます。 – TessellatingHeckler

答えて

0

回答:私はダンボールです。

変数を代入する前に、変数を初期化する必要があります。修正は$ backlog [x]割り当ての先頭に$ backlog = 0,0,0,0,0,0を追加することでした。

関連する問題