测试路径问题

时间:2016-06-04 13:25:14

标签: powershell powershell-v3.0 windows-server-2012

为什么Test-Path -Path $folder -PathType Container会返回true,但文件夹不存在? 路径是:

  

C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \模块\ MyCompany的\模块

ISE x86和ISE中的代码相同,但结果不同

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

答案是here

摘录:

  

' System32'文件夹用于64位文件和' SysWOW64'文件夹用于32位文件

     

这可能有些令人困惑,但System32文件夹是有意的   对于64位文件,SysWOW64文件夹用于32位文件。

     

如果查看文件夹名称,这看起来有点不合逻辑,但是   对此有一个解释。它与兼容性有关。许多   开发人员已经硬编码了他们的系统文件夹的路径   应用程序源代码。他们包括" System32"在文件夹中   路径。如果应用程序已转换,则保持兼容性   对于64位代码,64位系统文件夹仍然命名为System32。

     

但是那些系统路径很难的32位应用程序呢   编码并在64位Windows中运行?他们怎么能找到新的   您可能会认为SysWOW64文件夹没有更改程序代码。

     

答案是模拟器将对System32文件夹的调用重定向到   即使文件夹是硬编码的,SysWOW64文件夹也是透明的   到System32文件夹(如C:\ Windows \ System32),模拟器将   确保使用SysWOW64文件夹。同样的来源   代码,包含包含System32文件夹的路径,可以   编译为32位和64位程序代码,无需任何更改。

     

请记住:•SysWOW64文件夹仅适用于32位文件   •System32文件夹仅适用于64位文件   重要的是二进制文件编译为特定的位(32或64)   安装到正确的系统文件夹。否则程序那个   需要该文件将无法加载该文件,可能不会   按预期工作。

这就是为什么ISE x86输出在SysWow64文件夹中并调用:

  

C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \模块\ MyCompany的\模块

被重定向到SysWow64文件夹。

ISE控制台以x64格式运行,因此将在System 32中查找并找不到此文件夹,但该文件夹是在ISE x86控制台中创建的,该控制台将文件夹保存在SysWOW64下。