Net Use and ForEach with Variables in PowerShell



我正在执行一项稍微不寻常的任务,因为我正在运行一个执行各种任务的PowerShell脚本。任务的一个步骤要求我使用NET USE(在旧XP设备上(映射网络驱动器。我在CSV中有一个设备、IP的列表,但在使用Foreach时,我很难从CSV中提取设备名称,因为我正在将ForEach循环中的变量嵌入到net use命令的路径中,PowerShell并没有按照我的预期解释它。

CSV: Column 1 = Device, Column 2 = IP

代码:

$Site = "ABC"
$mapdevs = Import-Csv "C:DEVS$Site.csv"
ForEach ($dev in $mapdevs) {
& Net Use * \$dev.Devicec$ /user:admin P@ssw0rd }

有人知道我如何从CSV中检索列值并嵌入到网络使用行中吗?

否则,我认为这可能会奏效:

$Site = "ABC"
$mapdevs = Import-Csv "C:DEVS$Site.csv"
ForEach ($dev.Device in $mapdevs) {
& Net Use * \$dev.Devicec$ /user:admin P@ssw0rd }

第二次尝试绝对不对。我不能使用新的PSDrive,因为端点系统不支持WMF。

提前感谢

在字符串中展开$Variable.Property时,必须使用封闭的$()以强制评估,否则仅扩展CCD_ 5并且将CCD_。您可能需要使用反勾号来转义文字$

所以使用

& Net Use * ("\$($dev.Device)c`$") /user:admin P@ssw0rd

可替代地使用-f格式操作员

& Net Use * ("\{0}c`$" -f $dev.Device) /user:admin P@ssw0rd

连接也应该起作用:

& Net Use * ("\"+$dev.Device+"c`$") /user:admin P@ssw0rd
ForEach ($dev in $devs) {
& Net Use * "\" + $dev.Device + "c$" /user:admin P@ssw0rd }

上面似乎使用变量连接字符串并选择正确的信息,更接近但仍然不完全正确的

最新更新