【发布时间】:2019-06-10 09:53:59
【问题描述】:
我正在使用 powershell 并创建了一个文本文件,该文件会下拉服务器上可用的共享列表。
此文本文件包含许多空格,但我只需删除文件夹名称中的空格,例如Test 2$。
理想情况下,我只想删除此空间,使其显示为Test2$。因为我正在尝试创建一个 CSV 以便它可以在另一个脚本中使用。
我复制文本文件并将其重命名为 csv,然后复制该 CSV 的内容并使用空格作为分隔符,然后将结果放入列中,但是当它这样做时,它也会占用多个空格,因此清除所有空格,结果如下所示。
这可能吗?
所以我尝试了以下方法:
-replace " ",""
$_.trim() -ne
两者都删除了所有个空格。但我只需要删除一个。
我当前的代码
##############################################################
#Varibles
##############################################################
$PCs = gc "C:\Temp\Servers\Pc.txt"
$FSText = "C:\Temp\Servers\FileShares.txt"
$FSText2 = "C:\Temp\Servers\FileShares2.txt"
$FSERRORS = "C:\Temp\Servers\Errors.txt"
$FSCSV = "C:\Temp\Servers\Server_Shares.csv"
$FSCSV2 = "C:\Temp\Servers\Server_Shares2.csv"
#############################################################
#############################################################
Function Shares{
$PCs|Foreach-Object{
Try{
$ErrorActionPreference = 'Stop'
$PC = $_
Get-WmiObject win32_share -ComputerName $_ | Sort-Object -Property path | ft @{Name="Server";Expression={$_.__Server}},path,name
}
Catch
{ "Unable to obtain to access to shares on $PC " | Out-file $FSERRORS
$ErrorActionPreference ='Continue'
}
}
}
#############################################################
Shares | Out-File $FSText
#############################################################
Function Format{
(GC $FSText) -replace "Server", "" -replace "Path","" -replace "Name","" |Set-Content $FSText
(GC $FSText) | ?{$_.trim() -ne ""} |Set-Content $FSText
(GC $FSText) -replace "\s+" , ";" | Out-File $FSText
copy-item $FSText $FSText2
Rename-Item $FSText $FSCSV
Rename-Item $FSText2 $FSText
Import-CSV $FSCSV -Delimiter ';' -header Server,Path,Name| Export-CSV $FSCSV2 -NoClobber -NoTypeInformation -Append
}
#############################################################
Format
#############################################################
文本文件中的结果
------ ---- ---- WKS000001 IPC$ WKS000001 C:\ C$ WKS000001 C:\Temp\Test 测试 WKS000001 C:\Temp\Test 2$ 测试 2$ WKS000001 C:\WINDOWS 管理员$ ------ ---- ---- WKS000002 IPC$ WKS000002 C:\ C$ WKS000002 C:\Windows 管理员$csv 中的结果
服务器路径名称 ------ ---- ---- WKS000001 IPC$ WKS000001 C:\ C$ WKS000001 C:\Temp\Test 测试 WKS000001 C:\Temp\Test 2$ WKS000001 C:\WINDOWS 管理员$ ------ ---- ---- WKS000002 IPC$ WKS000002 C:\ C$ WKS000002 C:\Windows 管理员$如您所见,它将 Test 2$ 的路径分成两列,但我需要它在一个列中。
【问题讨论】:
-
您以错误的方式处理此问题,在将数据保存到 txt 文件之前更新数据会更容易。请更新您的问题以包含您用于创建 txt 文件的代码,以便我们可以看到您在做什么:)
-
更新代码以反映所要求的内容
标签: powershell