我正在执行一项稍微不寻常的任务,因为我正在运行一个执行各种任务的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 }
上面似乎使用变量连接字符串并选择正确的信息,更接近但仍然不完全正确的