gpt4 book ai didi

powershell - 跨多个卷搜索文件

转载 作者:行者123 更新时间:2023-12-01 07:24:20 24 4
gpt4 key购买 nike

我最近遇到了 this post,但它很旧,我想你们都希望我开始一个新线程。

基本上,我正在编写一个用于部署 WIM 的 PS 脚本。我们 将 UNC 路径映射为映射驱动器 ,然后运行一个批处理文件来搜索特定文件并根据它们的路径创建一个变量。一旦变量就位,脚本将继续 - 使用所述变量。批处理文件中的代码示例如下所示:

FOR %%i IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\Win10.wim SET _WIMLocation=%%i:

如何在 PS 中复制类似的东西?通常,我会对驱动器号进行硬编码,但如果其他人使用不同的字母映射驱动器,脚本就会中断。所以,这就是它搜索驱动器号的原因......

最佳答案

这是在 PowerShell 中执行此操作的一种方法:

首先,您将使用驱动器号制作一个阵列。通过用引号或双引号括起来,每个字母将是一个字符串,然后使用逗号分隔每个值,以便变量将是一个字符串数组。

$Drives = "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"

然后使用 foreach 循环,循环遍历数组的每个值。
foreach ($Drive in $Drives) {

然后使用 if 语句进行测试,在 if 中,您可以使用 Test-Path cmdlet 测试文件夹或文件是否存在。 ${} 使我可以将变量放在引号内并将其全部设为一个字符串,而解析器不会被 : 混淆。或者,您可以使用串联 Test-Path $($Drive + ":\win10.wim") 构建路径,其中 $() 是要首先计算的子表达式,然后 + 运算符将连接两个字符串。
   if (Test-Path "${Drive}:\Win10.wim") {

最后,当 $Drive 语句成功时,您可以设置一个变量等于 if 变量
       $WIMLocation = $Drive
}
}

这是它的整体外观:
$Drives = "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
foreach ($Drive in $Drives) {
if (Test-Path "${Drive}:\Win10.wim") {
$WIMLocation = $Drive
}
}

关于powershell - 跨多个卷搜索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43372607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com