2017-02-13 34 views
0

私は、ユーザー入力に基づいてフォルダ構造を作成する関数を含むpowershellでツールを作成しています。以下は、関連するコードです:PowerShell New-item - オブジェクト参照がオブジェクトのインスタンスに設定されていません

function set-drvsource{ 
    Write-Host "INFO: Querying Driver Source" -ForegroundColor Yellow 
    } 
    try{ 
     Write-Host "INFO: Creating standard folder structure" -ForegroundColor Yellow 
     New-Item -ItemType Directory -Path "$drvpath" | Out-Null 
     New-Item -ItemType Directory -Path "$drvpath\Source" | Out-Null 
     New-Item -ItemType Directory -Path "$drvpath\Package" | Out-Null 
    } 
    catch{ 
     Write-Host "ERROR: Could not create folder structure" -ForegroundColor Red 
     Exit 
    } 
    Write-Host "INFO: Moving local source to new source" -ForegroundColor Yellow 
    Copy-Item $src "$drvpath\Source" -Recurse 
} 
function main{ 
    set-drvsource 
} 
$drvroot = "\\server\share\tmp" 
$src = Read-Host "Please provide local driver source path" 
$vendor = Read-Host "Device Vendor eg. DELL, HP, Microsoft" 
$dmd = Read-Host "Device Model eg. HP Elitebook 840 G3" 
$dos = Read-Host "Operating System eg. W7 or W10" 
$dac = Read-Host "x64 or x86" 
$drvpath = "$drvroot\$vendor\$dmd $dos $dac" 

私はこれを実行すると、それはcatchステートメントをトリガし、次のエラーがスローされます。

$Error[0] 
New-Item : Object reference not set to an instance of an object. 
At line:9 char:1 
+ New-Item -ItemType Directory -Path "$drvpath" | Out-Null 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [New-Item], NullReferenceException 
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.NewI 
    temCommand 

私は新しいPowerShellで次のことを実行する場合は興味深いものがあり、セッションでは、期待どおりに動作しますので、そのない範囲の問題、

$drvroot = "\\server\share\tmp" 
$vendor = Read-Host "Vendor" 
$dmd = Read-Host "Device Model eg. HP Elitebook 840 G3" 
$dos = Read-Host "Operating System eg. W7 or W10" 
$dac = Read-Host "x64 or x86" 
$drvpath = "$drvroot\$vendor\$dmd $dos $dac" 
New-Item -ItemType Directory -Path "$drvpath" | Out-Null 
New-Item -ItemType Directory -Path "$drvpath\Source" | Out-Null 
New-Item -ItemType Directory -Path "$drvpath\Package" | Out-Null 

私がチェック倍増してきたと$ drvpathは、関数に通じ生き残るのか? ご迷惑をおかけして申し訳ございません。 : '(

EDIT:$エラーの出力[0] | FL -force

Exception    : System.NullReferenceException: Object reference not 
         set to an instance of an object. 
          at Microsoft.ConfigurationManagement.PowerShell.Prov 
         ider.CMDriveProvider.NewItem(String path, String 
         itemTypeName, Object newItemValue) 
          at System.Management.Automation.SessionStateInternal 
         .NewItemPrivate(CmdletProvider providerInstance, 
         String path, String type, Object content, 
         CmdletProviderContext context) 
TargetObject   : 
CategoryInfo   : NotSpecified: (:) [New-Item], NullReferenceException 
FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Comm 
         ands.NewItemCommand 
ErrorDetails   : 
InvocationInfo  : System.Management.Automation.InvocationInfo 
ScriptStackTrace  : at set-drvsource, C:\temp\quick 
         import_cli-1.1\quickimport_cli-1.1\Invoke-QuickImport.p 
         s1: line 51 
         at main, C:\temp\quickimport_cl 
         i-1.1\quickimport_cli-1.1\Invoke-QuickImport.ps1: line 
         101 
         at <ScriptBlock>, C:\temp\quick 
         import_cli-1.1\quickimport_cli-1.1\Invoke-QuickImport.p 
         s1: line 165 
PipelineIterationInfo : {} 
PSMessageDetails  : 
+0

ショー出力 – PetSerAl

+0

@PetSerAl – FishFenly

+0

'\\ server \ share \ tmp' - >' filesystem :: \\ server \ share \ tmp'を追加しました – PetSerAl

答えて

0

PetSerAlが問題を解決し、提案されているように、FileSystemプロバイダーでの$ drvroot変数を定義

関連する問題