Powershell - 从文件加载参数

PnP*_*PnP 5 powershell

这是我的第二个问题,相当快的接班人!基本上目前,我正在运行一个 powershell 脚本,我手动执行该脚本并将参数传递给 CMD 行,例如:

PostBackupCheck.Ps1 C 1 Hello Test Roger 
Run Code Online (Sandbox Code Playgroud)

这些被放入变量并在脚本中使用。

有没有办法将这些逐行添加到文本文件中,例如:

C 1 Hello Test Roger 0
C 2 Hello Test Roger 1
C 3 Hello Test Roger 2
Run Code Online (Sandbox Code Playgroud)

然后让Powershell脚本使用第一行,执行脚本,然后循环返回并使用下一行,执行脚本,循环返回等等。

所以在上下文中 - 我需要在以下命名上下文中安装图像

SERVERNAME_DRIVELETTER_b00x_ixxx.spi
Run Code Online (Sandbox Code Playgroud)

在哪里,

SERVERNAME = Some string
DRIVELETTER = Some Char
b00X - where X is some abritrary number
ixxx - where xxx is some abritrary number
Run Code Online (Sandbox Code Playgroud)

所以在我的文本文件中:

MSSRV01 C 3 018
MSSRV02 D 9 119
Run Code Online (Sandbox Code Playgroud)

等等。它使用此信息来安装特定的备份映像(通过 ShadowProtect 的

mount.exe SERVERNAME_DRIVELETTER_b00x_ixxx.spi
Run Code Online (Sandbox Code Playgroud)

谢谢!

CB.*_*CB. 5

你可以尝试做这样的事情:

内容p.txt

C 1 Hello Test Roger 0
C 2 Hello Test Roger 1
C 3 Hello Test Roger 2
Run Code Online (Sandbox Code Playgroud)

脚本的内容p.ps1

param($a,$b,$c,$d,$e,$f)

"param 1 is $a"
"param 2 is $b"
"param 3 is $c"
"param 4 is $d"
"param 5 is $e"
"param 6 is $f"
"End Script"
Run Code Online (Sandbox Code Playgroud)

对脚本的调用:

(Get-Content .\p.txt ) | % { invoke-expression  ".\p.ps1 $_" }
Run Code Online (Sandbox Code Playgroud)

结果:

param 1 is C
param 2 is 1
param 3 is Hello
param 4 is Test
param 5 is Roger
param 6 is 0
End Script
param 1 is C
param 2 is 2
param 3 is Hello
param 4 is Test
param 5 is Roger
param 6 is 1
End Script
param 1 is C
param 2 is 3
param 3 is Hello
param 4 is Test
param 5 is Roger
param 6 is 2
End Script
Run Code Online (Sandbox Code Playgroud)

编辑:

编辑后你可以尝试这样的事情。

Get-Content .\p.txt  | 
% { $a = $_ -split ' ' ; mount.exe  $($a[0])_$($a[1])_b00$($a[2])_i$($a[3]).spi }
Run Code Online (Sandbox Code Playgroud)