Powershell 测试路径问题

Powershell 测试路径问题,powershell,powershell-3.0,windows-server-2012,Powershell,Powershell 3.0,Windows Server 2012,为什么测试路径-Path$folder-PathType容器返回true,但文件夹不存在? 路径是: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MyCompany\Modules ISE x86和ISE中的代码相同,但结果不同 答案是 摘录: System32文件夹用于64位文件,“SysWOW64”文件夹用于32位文件 这可能有点让人困惑,但System32文件夹是专门为您设计的 对于64位文件,SysWOW64文件夹用于32位文件

为什么
测试路径-Path$folder-PathType容器
返回
true
,但文件夹不存在? 路径是:

C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MyCompany\Modules

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

答案是

摘录:

System32文件夹用于64位文件,“SysWOW64”文件夹用于32位文件

这可能有点让人困惑,但System32文件夹是专门为您设计的 对于64位文件,SysWOW64文件夹用于32位文件

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

但是,对于系统路径困难的32位应用程序呢 是否已编码并正在64位Windows中运行?他们怎样才能找到新的 SysWOW64文件夹中没有更改的程序代码,您可能会想

答案是emulator将对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\Modules\MyCompany\Modules

被重定向到SysWow64文件夹


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

因此,即使您有明确的完整路径,system32是否在64位进程中隐藏或隐藏?我的powershell文件始终仅在C:\Windows\SysWOW64中。因此,我总是会得到与您相反的结果。是的,文件夹位于
SysWow64
下,但是为什么ISE x86控制台显示true而ISE控制台显示false?