我编写了一个脚本,我已经提出了一个条件,即如果服务器正在搜索下面的文件并读取文件内容。但它给出的错误如下
if ((Test-Connection -ComputerName $fqdn -Count 1 -Quiet) -eq 1)
{
$Value = "Host is pinging"
$searchtext = "Imaging Completed"
$file = "\\$fqdn\C$\Image.log"
if (Test-Path $file)
{
if (Get-Content $file | Select-String $searchtext -quiet)
{
Write-Host "$fqdn Imaging Completed"
错误:
Test-Path : Access is denied At C:\Windows\TEMP\hudson4530962683016292267.ps1:65 char:5 + if (Test-Path $file) + ~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (\\server1.us.o...\Image.log:String) [Test-Path], UnauthorizedAccessException + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.TestPathCommand
任何人都可以在此纠正我以解决问题吗?
答案 0 :(得分:0)
正如其他评论已指出您必须使用有效凭据才能访问相关文件。
正如您所提到的,脚本的帐户名称是在服务下运行的(怀疑是Jenkins)。如果您按照手册Install Jenkins as a Windows service查看了您的服务配置,您可能会发现该服务实际上以LocalSystem
运行,这将解释观察到的用户名。这也与使用相同帐户的手册中的屏幕截图相匹配:
为了解决这种情况,您可以选择将此服务配置为在具有足够(特别是NetworkAccess
)权限的其他帐户下运行(您提到的帐户具有'域管理员访问权限&# 39;应该足够了)。
但请记住,建议尽可能少地使用具有特权的帐户。