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?