ファイルを圧縮するための powershell スクリプトがありますが、いくつか問題が発生しています。私のスクリプトの簡略版は次のとおりです。
function MyFunction([__ComObject] $zipFile)
{
if(test-path($zipFile.Self.Path))
{
"Zip path found in MyFunction: " + $zipFile.Self.Path
}
else
{
"Zip path not found in MyFunction: " + $zipFile.Self.Path
}
# Check path directly
if(test-path("C:\zips\july2013.zip"))
{
"Direct zip path found in MyFunction: " + $zipFile.Self.Path
}
else
{
"Direct zip path not found in MyFunction: " + $zipFile.Self.Path
}
}
$zipfilepath = "C:\zips\july2013.zip"
if(-not (test-path($zipfilepath)))
{
set-content $zipfilepath ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $zipfilepath).IsReadOnly = $false
}
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilepath)
if( (test-path($zipPackage.Self.Path)))
{
"Zip exists: " + $zipPackage.Self.Path
}
else
{
"Zip does not exist: " + $zipPackage.Self.Path
}
MyFunction $zipPackage
スクリプトを実行する前に C:\zips\july2013.zip が存在する場合、または PowerShell を開いてデバッグすることでスクリプトを実行すると、(予想どおり):
Zip exists: C:\zips\july2013.zip
Zip path found in MyFunction: C:\zips\july2013.zip
Direct zip path found in MyFunction: C:\zips\july2013.zip
ただし、ファイルが C:\zips\july2013.zip に存在せず、PowerShell を開かずに実行すると (つまり、[Powershell で実行] を右クリック)、次のようになります。
Zip exists: C:\zips\july2013.zip
Zip path not found in MyFunction: C:\zips\july2013.zip
Direct zip path not found in MyFunction: C:\zips\july2013.zip
私はpowershellを初めて使用しますが、何が起こっているのでしょうか?