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 :
ショー出力 – PetSerAl
@PetSerAl – FishFenly
'\\ server \ share \ tmp' - >' filesystem :: \\ server \ share \ tmp'を追加しました – PetSerAl