运行PowerShell脚本时出现拒绝访问错误

时间:2017-02-28 06:11:03

标签: powershell jenkins

我编写了一个脚本,我已经提出了一个条件,即如果服务器正在搜索下面的文件并读取文件内容。但它给出的错误如下

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

任何人都可以在此纠正我以解决问题吗?

1 个答案:

答案 0 :(得分:0)

正如其他评论已指出您必须使用有效凭据才能访问相关文件。

正如您所提到的,脚本的帐户名称是在服务下运行的(怀疑是Jenkins)。如果您按照手册Install Jenkins as a Windows service查看了您的服务配置,您可能会发现该服务实际上以LocalSystem运行,这将解释观察到的用户名。这也与使用相同帐户的手册中的屏幕截图相匹配:

Install Jenkins as a Windows service

为了解决这种情况,您可以选择将此服务配置为在具有足够(特别是NetworkAccess)权限的其他帐户下运行(您提到的帐户具有'域管理员访问权限&# 39;应该足够了)。 但请记住,建议尽可能少地使用具有特权的帐户。