搜索并获取文件,但如果值为 null,则忽略代码
Search & fetch the files but ignore the code if value passed null
我通过传递文件的版本号从特定文件夹中获取文件,但如果我不传递版本号(按回车键),则值变为空并且代码不会执行。
在我的代码中,当我没有通过版本(按回车)时,它会从该文件夹中获取所有文件,这是不正确的。
如果我将 null
值传递给变量 $basepkg
,代码不应执行 if($basepkg -ne $null -And $pkgtype -eq 'A')
这行代码,但它会执行。
Write-Host "Removing existing files"
Remove-Item -path F:\temp\Packages\* -Recurse -Force
$pkg = Read-Host 'Input the package version'
$basepkg = Read-Host 'Provide the Policy Base Package version' #Passing null value here
$pkgtype = Read-Host 'Please specify the package type - A OR B'
if($basepkg -ne $null -And $pkgtype -eq 'A')
{
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $basepkg } | Where-Object { $_.Name -match '`*basetemplate*'} | Where-Object { $_.Name -match '`*-A*'}| Copy-Item -Destination "F:\temp\Packages" -Force
}
elseif($basepkg -ne $null -And $pkgtype -eq 'B')
{
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $basepkg } | Where-Object { $_.Name -match '`*basetemplate*'} |Where-Object { $_.Name -match '`*-B*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
else
{
Break
}
if($pkgtype -eq 'A')
{
Write-Host "Extracting files"
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $pkg } | Where-Object { $_.Name -match 'policy*'} | Where-Object { $_.Name -match '`*-A*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
elseif($pkgtype -eq 'B')
{
Write-Host "Extracting files"
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $pkg } | Where-Object { $_.Name -match 'policy*'} | Where-Object { $_.Name -match '`*-B*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
else
{
Write-Host "Please select the correct package type by re-running the script"
Start-Sleep -s 5
exit
}
$pkgCount = Get-ChildItem -Path "F:\temp\Packages" -Recurse -File | Measure-Object | %{$_.Count}
if($pkgCount -eq $null)
{
Write-Host "Package not found, please confirm the package version"
Start-Sleep -s 5
exit
}
Write-Host "Files Extracted"
当您按回车键时,Read-Host
不是 return $null
,而是 ''
(空字符串)。要检查两者,请使用 [string]::IsNullOrEmpty($basepkg)
:
if(-not [string]::IsNullOrEmpty($basepkg) -And $pkgtype -eq 'A'){...}
我通过传递文件的版本号从特定文件夹中获取文件,但如果我不传递版本号(按回车键),则值变为空并且代码不会执行。
在我的代码中,当我没有通过版本(按回车)时,它会从该文件夹中获取所有文件,这是不正确的。
如果我将 null
值传递给变量 $basepkg
,代码不应执行 if($basepkg -ne $null -And $pkgtype -eq 'A')
这行代码,但它会执行。
Write-Host "Removing existing files"
Remove-Item -path F:\temp\Packages\* -Recurse -Force
$pkg = Read-Host 'Input the package version'
$basepkg = Read-Host 'Provide the Policy Base Package version' #Passing null value here
$pkgtype = Read-Host 'Please specify the package type - A OR B'
if($basepkg -ne $null -And $pkgtype -eq 'A')
{
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $basepkg } | Where-Object { $_.Name -match '`*basetemplate*'} | Where-Object { $_.Name -match '`*-A*'}| Copy-Item -Destination "F:\temp\Packages" -Force
}
elseif($basepkg -ne $null -And $pkgtype -eq 'B')
{
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $basepkg } | Where-Object { $_.Name -match '`*basetemplate*'} |Where-Object { $_.Name -match '`*-B*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
else
{
Break
}
if($pkgtype -eq 'A')
{
Write-Host "Extracting files"
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $pkg } | Where-Object { $_.Name -match 'policy*'} | Where-Object { $_.Name -match '`*-A*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
elseif($pkgtype -eq 'B')
{
Write-Host "Extracting files"
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $pkg } | Where-Object { $_.Name -match 'policy*'} | Where-Object { $_.Name -match '`*-B*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
else
{
Write-Host "Please select the correct package type by re-running the script"
Start-Sleep -s 5
exit
}
$pkgCount = Get-ChildItem -Path "F:\temp\Packages" -Recurse -File | Measure-Object | %{$_.Count}
if($pkgCount -eq $null)
{
Write-Host "Package not found, please confirm the package version"
Start-Sleep -s 5
exit
}
Write-Host "Files Extracted"
Read-Host
不是 return $null
,而是 ''
(空字符串)。要检查两者,请使用 [string]::IsNullOrEmpty($basepkg)
:
if(-not [string]::IsNullOrEmpty($basepkg) -And $pkgtype -eq 'A'){...}