索引文件的隐藏特征导致失败

时间:2014-05-01 01:15:49

标签: powershell

我正在尝试创建一个循环的机器名索引。该文件看起来正确,但根本无法循环遍历计算机,就好像存在隐藏字符或有关该文件的异常情况。我错过了什么?谢谢 - 是的,我是新手。

的PowerShell:

  
$uncServer="\\*******\DHCP"
$username="*****"
$password="*******"
net use $uncServer $password /USER:$username
$input_path=$uncServer+"\"+'winsexport.txt'
$output_file='D:\Projects\StoreControls\machinfo\allworkstations.txt'
$regex='\b[S]\d{6}\b'
Select-String -Path $input_path -Pattern "ACTIVE" |Select-Object Line | `
    Select-String -Pattern $regex -Allmatches|%{$_.Matches}|%{$_.Value}| get-unique >       $output_file
net use $uncServer /delete

例如。输出

s123420
s123421
.
.

循环逻辑:

FOR /F %%i IN (d:***********\allworkstations.txt) DO (    #this does nothing
    start /B d:\***********\GetMachInfo.bat %%i
    PING 1.1.1.1 -n 1 -w 1000 >NUL
         )
PING 1.1.1.1 -n 1 -w 1000 >NUL
exit

1 个答案:

答案 0 :(得分:0)

很难推测知道 winsexport.txt 文件中的内容。最可能的罪魁祸首是CR或LF字符,所以请尝试删除它们。变化

 ... -Allmatches|%{$_.Matches}|%{$_.Value}| get-unique ...

 ... -Allmatches|%{$_.Matches}|%{$_.Value -replace "`r|`n|\s|`t",""}| get-unique ...

为什么要切换回命令提示符循环?你可以继续使用powershell

foreach($machine in (gc d:***********\allworkstations.txt)){
    d:\***********\GetMachInfo.bat $machine
    sleep 1
}
sleep 1