2013-09-18 3 views
0

Делаю скрипт, который будет искать файл. Если файл найден, он будет писать txt-файл на сервере с именем и адресом компьютера, где находится файл.Powershell скрипт для поиска файлов в ограниченных папках (другие пользовательские папки)

$filePath = "c:" 
$fileName = "somefile" 
$computerName = Get-Content env:computername 
$srvPath = "\\server\share$\FindFileScript\$computerName.txt" 

#SEARCH FOR FILE ON C DISK 
$fileResult = (Get-ChildItem -Recurse -Force $filePath -ErrorAction SilentlyContinue 
| Where-Object { $_.Name -like "*$fileName*" } | Select-Object FullName | format-Table * -AutoSize) 
if ($fileResult -eq $Null) 
{ 
Write-Host "File named $fileName on disk C was not found." 
} 
Else 
{ 
Write-Host "File named $fileName on disk C was found." 
Out-File -FilePath $srvPath -InputObject $fileResult 
} 

1) Мы используем стороннюю программу, которая может развернуть программы и запустить сценарий powershell.

Проблема заключается в том, что скрипт запуска программы как пользователь Administrator, поэтому сценарию powershell не разрешено искать файлы в папке C: \ Users [some_other_user].

Есть ли способ заставить поиск по папкам с ограниченными, а?

2) Второй вопрос не так важен, но возможно ли каким-то образом включить в $ filePath не только C: но D: также?

====================================== EDIT: Хорошо, я думаю, проблема сейчас еще хуже. Он не ищет не только папку пользователя, но и диск C вообще ... по какой-то причине я этого не заметил.

Таким образом, проблема заключается не в скрипте powershell, а в стороннем инструменте развертывания. При запуске скрипта вручную на физическом компьютере он работает.

Так что мне лучше найти способ запуска этого сценария по-другому, можно ли другим способом запустить этот скрипт для пользователей?

I судимое на локальной машине из cmd.exe:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1 

Он вернулся результаты поиска на D: и я: только, но игнорировали C:

========== ============================ EDIT2: Я начинаю Powershell как обычный пользовательский копипаст сценарий и он работает, он находит файл на диске C!

Если я запускаю Powershell в качестве скрипта для копирования-вставки администратора, то он не работает, он не находит файл на диске C.

+0

Конечно, для того, чтобы сделать скрипт короче удалю Write-хостинга и положить -ne $ Null позже. – Phoneutria

ответ

0

1) Мы используем стороннюю программу, которая может развертывать программы и запускать сценарий powershell.

Проблема заключается в том, что скрипт запуска программы как пользователь Administrator, поэтому сценарию powershell не разрешено искать файлы в папке C: \ Users [some_other_user].

Есть ли способ принудительного поиска по ограниченным папкам?

По умолчанию только владелец папки профиля (обычно соответствующий пользователь) имеет доступ к этой папке. Чтобы разрешить доступ для других пользователей, вам необходимо взять на себя управление папкой в ​​качестве администратора, а затем повторно назначить разрешения. Общепринятой практикой является предоставление полного контроля SYSTEM, Администраторам и пользователю, к которому принадлежит профиль.

Вы можете определить политику, которая изменяет поведение по умолчанию, чтобы система и администраторы автоматически получали доступ к вновь созданным профилям.

Обратите внимание, что поиск профилей других пользователей может иметь последствия для конфиденциальности, поэтому убедитесь, что для вас это действительно законно.

2) Второй вопрос не так уж важно, но это можно как-то включить в $ Filepath не только C: D, но: а?

Get-ChildItem принимает массив строк, так что вам просто нужно изменить

$filePath = "c:" 

в

$filePath = "c:", "d:" 

 Смежные вопросы

  • Нет связанных вопросов^_^