powershell 逐行阅读文本文件

rbl8hiat  于 2023-06-23  发布在  Shell
关注(0)|答案(2)|浏览(222)

我是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

我就是没法让这东西发挥作用。
重新编辑:
我想做的是:
我们从一个存储服务器转到一个新的存储服务器。
ASRV 1至FSSRV
我想创建一个从asrv 1到fssrv的快捷方式。沿着升级,我们也改变域和改变每个人的windows用户名。
例如,我的用户名是fMunoz,它被更改为fMunoz 00。
我想从文本文件> users.txt中提取所有旧用户名,并创建新用户名存储文件的快捷方式,这些用户名位于名为users1.txt的txt文件中。

oyxsuwqo

oyxsuwqo1#

如果我理解了您的请求,您希望在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()
    }
}
djmepvbi

djmepvbi2#

我要感谢所有帮助我的人。
我想出了一个不同的解决方案。我解决这个问题的方法是创建一个Excel工作表w/ 2列。
老用户|新用户
然后我用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.保存()
我希望这可以帮助其他任何人试图完成类似的事情。
再次感谢和祝你好运...

相关问题