【问题标题】:How to navigate to a file in an unknown drive letter (powershell)如何导航到未知驱动器号中的文件(powershell)
【发布时间】:2022-10-16 00:17:20
【问题描述】:

我正在尝试在闪存驱动器上创建一个脚本,以在我们公司的所有计算机上运行多个命令。在这个特定的部分中,我正在尝试运行 AVAST 命令来运行病毒扫描并在晚上 10 点进行更新。我遇到的问题是:为了运行这些命令,我​​必须导航到 Avast 软件所在的文件夹。事情是每台计算机的驱动器号可能会有所不同......所以我不确定我是否能够使用通配符或者我将如何去做。我当前的脚本是:

echo off
cd "$((get-location).drive.name):\Program Files (x86)\Avast Software"
ashupd.exe/vps
ashupd.exe/program
ashcmd.exe/*
pause

这只会获取当前的驱动器号......这将是我正在运行脚本的闪存驱动器。所以这不好。

【问题讨论】:

  • 您在寻找Get-PSDrive 吗?
  • 那只是显示驱动器列表,对吗?我可以在我的脚本中使用它吗?我们正在尝试使脚本成为 1-2 次单击并完成某种事情。所以我们不能到处运行该命令来手动为每台计算机找到驱动器......因为我们有数百台计算机,这需要很多时间
  • 您通常可以从注册表中获取已安装程序的安装路径。作为有根据的猜测,请使用 RegEdit 查看HKEY_LOCAL_MACHINE\Software\AvastHKEY_LOCAL_MACHINE\Software\Wow6432Node\Avast。可能有一个名为InstallPath 或类似名称的值。使用 PowerShell,您可以像这样获得它的值:(Get-ItemProperty 'hklm:\Software\Avast' -Name InstallPath).InstallPath
  • 您需要遍历驱动器并检查您要执行的位置或文件是否实际驻留在其中。如果公司内的计算机安装方式相同,您可能会幸运地使用one of Windows' environment variables 和/或迭代各个驱动器。但是您最好使用已安装软件的注册表项来确定它们的安装路径。

标签: powershell drive-letter


【解决方案1】:

当我需要同时尝试 32 位和 64 位路径时,我保存了这个小测试。

$var = Get-WmiObject win32_operatingsystem

if ($var.osarchitecture -like "64*") {
    #64 bit logic here
    $path = path	o4x
}
else {
    #32 bit logic here
    $path = path	o86x
}

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 2012-05-24
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多