Я использую 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 Test
WKS000001 C:\Temp\Test 2$ Test 2$
WKS000001 C:\WINDOWS ADMIN$
------ ---- ----
WKS000002 IPC$
WKS000002 C:\ C$
WKS000002 C:\Windows ADMIN$
Результаты в CSV
Server Path Name
------ ---- ----
WKS000001 IPC$
WKS000001 C:\ C$
WKS000001 C:\Temp\Test Test
WKS000001 C:\Temp\Test 2$
WKS000001 C:\WINDOWS ADMIN$
------ ---- ----
WKS000002 IPC$
WKS000002 C:\ C$
WKS000002 C:\Windows ADMIN$
Как видите, путь теста 2 $ разбивается на два столбца, однако мне нужно, чтобы он был в одном.