2017-02-28 80 views
-1

スクリプトを作成しましたが、サーバーが以下のファイルを検索してファイルの内容を読み取っている場合は条件を付けました。しかしPowerShellスクリプトの実行中にアクセス拒否エラーが発生しました

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

スクリプトを実行するために使用されるアカウントには、 '\\ server1.us.o ... \ Image.log'でファイルを読み取る権限がありません。 –

+0

しかし、私はユーザーアカウントにアクセスするドメイン管理アクセスを持っています – SNair

+8

あなたはJenkinsでこれを実行しているようです。それを使っているのはどのアカウントですか?スクリプトに "whoami"を追加して確認してください。 c $ではなく、そのユーザーの読み取り専用共有を作成する必要があるかもしれません。 –

答えて

0

すでに他のコメントが指摘されているように、問題のファイルにアクセスするには有効な資格情報を使用する必要があります。

上記のとおり、スクリプトのアカウント名はサービスの下で実行されます(Jenkinsが疑わしい)。マニュアルInstall Jenkins as a Windows serviceに従っていて、サービス設定を確認した場合、サービスは実際には観察されたユーザ名を説明するLocalSystemとして実行されることがあります。特に(状況を改善するために

Install Jenkins as a Windows service

は、あなたが十分に別のアカウントで実行するには、このサービスを構成するために選択することができます。これは、同じアカウントが使用されているマニュアルのスクリーンショットと一致します。 NetworkAccess)の特権(ここであなたが言及したアカウントには、「ドメイン管理者アクセス権」があれば十分です)。 できるだけ特権のないアカウントを使用することをお勧めします。

関連する問題