繁体   English   中英

逐行读取文本文件

[英]Reading a text file line by line

我是 Power Shell 的新手,似乎无法正确处理此脚本。

$WshShell = New-Object -comObject WScript.Shell
$users = Get-Content '\\fssrv\homeshares$\fMunoz00\Desktop\users.txt'
$users1 = Get-Content '\\fssrv\homeshares$\fMunoz00\Desktop\users1.txt'
$Shortcut = $WshShell.CreateShortcut("\\Fssrv\homeshares$\$users1\$users.lnk")
$Shortcut.TargetPath = "\\asrv1\users\$users"
$Shortcut.Save()

每次访问“users.txt”时,它都会尝试将其作为完整文件读取。 相反,我希望它阅读如下:

User1

User2

User3

我似乎无法让它发挥作用。

重新编辑:

我想要完成的事情:

我们从一台存储服务器转到了一台新的存储服务器。

ASRV1 到 FSSRV

我想创建一个从 asrv1 到 fssrv 的快捷方式。 随着升级,我们也在更改域并更改每个人的 Windows 用户名。

例如,我的用户名是 fMunoz,它已更改为 fMunoz00。

我想从文本文件 > users.txt 中提取所有旧用户名,并创建新用户名存储文件的快捷方式,这些用户名位于名为 users1.txt 的 txt 文件中。

如果我理解你的要求,你想在Users1.txt每个人的主目录中创建快捷方式

这意味着您将需要完成多个ForEach循环才能遍历两个 txt 文件。

$WshShell = New-Object -comObject WScript.Shell
$users = Get-Content '\\fssrv\homeshares$\fMunoz00\Desktop\users.txt'
$users1 = Get-Content '\\fssrv\homeshares$\fMunoz00\Desktop\users1.txt'

# For every line in $users1, Do something
Foreach($User in $users1) {
    # For every line in $users, Do something
    Foreach($Name in $users) {
        $Shortcut = $WshShell.CreateShortcut("\\Fssrv\homeshares$\$User\$Name.lnk")
        $Shortcut.TargetPath = "\\asrv1\users\$Name"
        $Shortcut.Save()
    }
}

我要感谢所有帮助我的人。

我想出了一个不同的解决方案来解决我的问题。 我解决这个问题的方法是创建一个带有 2 列的 Excel 工作表。

老用户 | 新用户

然后我使用 Microsoft Word 创建了一个邮件合并。 然后我继续在 powershell 中使用以下代码来开始我的循环:

$WshShell = New-Object -comObject WScript.Shell

一旦我的循环开始,我就利用邮件合并从 Excel 表中获取 <> 并将其替换为将其插入到我的代码中。 也拿了 <> 并做了同样的事情。

$Shortcut = $WshShell.CreateShortcut("\\Fssrv\\homeshares$\\«New_Users»\\«Old_Users»_Z Drive.lnk") $Shortcut.TargetPath = "\\asrv1\\users\\«Old_Users»" $Shortcut.Save()

我希望这可以帮助其他人尝试完成类似的事情。

再次感谢,祝你好运...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM