powershell - Net Use 和 ForEach 与 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.Device\c$ /user:admin P@ssw0rd }
有谁知道我如何从 CSV 中检索列值并嵌入到 net use 行中?
否则我认为这可能有效:
$Site = "ABC"
$mapdevs = Import-Csv "C:\DEVS\$Site.csv"
ForEach ($dev.Device in $mapdevs) {
& Net Use * \\$dev.Device\c$ /user:admin P@ssw0rd }
绝对不适合作为第二次尝试。我不能使用 New-PSDrive,因为端点系统不支持 WMF。
提前致谢
解决方案
在字符串中扩展 a$Variable.Property
时,您必须使用封闭$()
来强制评估,否则只会$Variable
扩展并.Property
视为文本。您可能需要$
使用反引号来转义文字。
所以使用
& 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
推荐阅读
- java - org.hibernate.PropertyAccessException: IllegalArgumentException 发生调用 com.span.model.Customer.custName 的 getter
- curl - Curl 和 Odata 过滤器:过滤器表达式无效
- jsonpath - 将 JsonPath 单值数组转换为对象
- ruby-on-rails - 控制器方法导轨的测试失败
- php - Ajax 加载带有时间间隔和媒体的 Json,以在全屏页面上显示
- syntax - 数据透视表语法 SPSS
- shell - 无法执行,因为您没有适当的访问权限
- css - 如何防止我的 div 与扩展面板一起移动
- javascript - Acrobat Javascript 往返于外部编辑器替换非英文字符
- javascript - 使用 Javascript 的 RSACryptoServiceProvider 加密