为什么 PowerShell 认为 C:\Windows\System32\WDI 不存在?如何使用 PowerShell 复制这些日志文件?
Why does PowerShell think C:\Windows\System32\WDI doesn't exist? How can I copy these log files with PowerShell?
我知道 C:\Windows\System32\WDI
存在并且有内容。我们需要从数百台机器上复制这些内容进行安全分析。我们尝试了:
Copy-Item 'C:\Windows\System32\WDI' -Destination .\my_output_dir\wdi -recurse
这适用于我的个人计算机(我认为我自己通过 gui 拥有 system32 的权限),但不适用于其他计算机上的我的同事。
在其他机器上,我们得到一个错误:
Copy-Item : Cannot find path 'C:\Windows\System32\WDI' because it does not exist.
At line:1 char:1
+ Copy-Item 'C:\Windows\System32\WDI' -Destination .\my_output_dir\wdi ...
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Windows\System32\WDI:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
在每台机器上进入 GUI 给自己必要的权限是不可行的。这怎么能纯粹通过powershell来实现呢?我们有管理凭证。
最可能的解释是无法找到目录是由于 32 位 64 位系统上的 PowerShell 会话中的 运行:System32
32 位进程看到的目录没有 WDI
子目录。
您有两个选择:
确保在任何地方都使用 64 位 PowerShell 会话。
有条件地构造目录路径,以便在32位会话中它通过SysNative
文件夹访问目录,该文件夹指的是是的,(矛盾的命名)64 位 System32
文件夹;以 Get-ChildItem
为例:
Get-ChildItem "$env:SystemRoot$(('SysNative', 'System32')[[Environment]::Is64BitProcess])\WDI"
注:
如果您仍然需要对 PowerShell long-obsolete v2 的支持,请将 $env:ProgramFiles -notlike '*(x86)'
替换为 [Environment]::Is64BitProcess
。
访问WDI
目录中的文件和目录需要权限(运行作为管理员)。
我知道 C:\Windows\System32\WDI
存在并且有内容。我们需要从数百台机器上复制这些内容进行安全分析。我们尝试了:
Copy-Item 'C:\Windows\System32\WDI' -Destination .\my_output_dir\wdi -recurse
这适用于我的个人计算机(我认为我自己通过 gui 拥有 system32 的权限),但不适用于其他计算机上的我的同事。
在其他机器上,我们得到一个错误:
Copy-Item : Cannot find path 'C:\Windows\System32\WDI' because it does not exist.
At line:1 char:1
+ Copy-Item 'C:\Windows\System32\WDI' -Destination .\my_output_dir\wdi ...
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Windows\System32\WDI:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
在每台机器上进入 GUI 给自己必要的权限是不可行的。这怎么能纯粹通过powershell来实现呢?我们有管理凭证。
最可能的解释是无法找到目录是由于 32 位 64 位系统上的 PowerShell 会话中的 运行:System32
32 位进程看到的目录没有 WDI
子目录。
您有两个选择:
确保在任何地方都使用 64 位 PowerShell 会话。
有条件地构造目录路径,以便在32位会话中它通过
SysNative
文件夹访问目录,该文件夹指的是是的,(矛盾的命名)64 位System32
文件夹;以Get-ChildItem
为例:
Get-ChildItem "$env:SystemRoot$(('SysNative', 'System32')[[Environment]::Is64BitProcess])\WDI"
注:
如果您仍然需要对 PowerShell long-obsolete v2 的支持,请将
$env:ProgramFiles -notlike '*(x86)'
替换为[Environment]::Is64BitProcess
。访问
WDI
目录中的文件和目录需要权限(运行作为管理员)。