ファイルを検索するスクリプトを作成しています。ファイルが見つかった場合は、ファイルが配置されているコンピューターの名前とパスを使用して、サーバーに txt ファイルを書き込みます。
$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スクリプトを起動できるサードパーティプログラムを使用しています.
問題は、そのプログラムが管理者ユーザーとしてスクリプトを起動するため、powershell スクリプトが C:\Users[some_other_user] フォルダーのファイルを検索できないことです。
制限されたフォルダーでも検索を強制する方法はありますか?
2) 2 番目の質問はそれほど重要ではありませんが、C: だけでなく D: も $filePath に含めることは可能ですか?
==================================== 編集: わかりました、今の問題はさらに悪いと思います. ユーザーフォルダだけでなく、Cディスクも全く検索しない・・・なぜか気が付かなかった。
したがって、問題はpowershellスクリプトではなく、サードパーティの展開ツールにあります. 物理コンピューターでスクリプトを手動で起動すると、機能します。
したがって、このスクリプトを別の方法で起動する方法を見つけた方がよいでしょう。ユーザーのためにこのスクリプトを起動できる他の方法はありますか?
cmd.exeからローカルマシンで試しました:
powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
D: と I: のみで検索結果が返されましたが、C: は無視されました。
==================================== EDIT2: Powershell を通常のユーザーとして起動し、スクリプトを実行すると、C ディスク上にファイルが見つかります。
管理者のコピー アンド ペースト スクリプトとして Powershell を起動すると、機能しません。C ディスク上のファイルが見つかりません。