На самом деле я пытаюсь создать некоторый код для определения прав на общие папки на каждом отдельном сервере, который есть у меня на предприятии.
На данный момент я уже перечислил каждый сервер и экспортировал его в файл .txt, сделал цикл с этим .txt для экспорта в другой файл .txt всех общих папок.
Все это работает нормально, но путь такой: c:\...\...\folder$
.Чтобы использовать это, мне нужно сделать цикл, чтобы заменить c:\
d:\
и т. Д. На \\servername\c$\
.
Я пытался использовать [system.io.file]::ReadAllText
и WriteAllText
, он работает нормально дляодна буква, но не нашел способа сделать цикл для него.
Я пробовал
get-content ... -replace "c:\","\\$ServerName\c$\" ` -replace "d:\" ...
, но получил ошибку о неправильном регулярном выражении, поэтому попытался с [regex]::Escape
но не сработало, как ожидалось, ни ...
Powershell
$contenu = [System.IO.File]::ReadAllText("$path\$SharedFolders.txt").Replace("C:\","\\$SharedFolders\c$\")
[System.IO.File]::WriteAllText("$path\$SharedFolders.txt", $contenu)
Powershell
(Get-Content "$path\$SharedFolders.txt") | foreach {
$_ -replace "C:\","\\$SharedFolders\C$\" `
-replace "D:\","\\$SharedFolders\D$\" `
[...] | Set-Content "$path\$sharedfolders.txt"}
И мне бы хотелось что-то подобное:
Powershell
('a'..'z').ForEach({ (Get-Content "$path\$SharedFolders.txt" -Raw).replace("$_`:\","\\$SharedFolders\$_$") })
Но я слишком новичок в Powershell, чтобы заставить его работать должным образом