2017-02-04 74 views
0

複数のリモートコンピュータでレジストリキー値を検索しようとしています。私のPCの共有フォルダに値を書き戻します。しかし、PCの共有フォルダに書き込む出力を指定すると、アクセス拒否エラーが発生します。 PowerShellを管理者として実行しています。Add-contentコマンドが私に「アクセスが拒否されました」UnautorizedAccessExceptionエラー

$computers = Get-Content "C:\Temp\AutoSug\Computers.txt" 
$output_path = "\\mycomputername\powershell\output.csv" 
$setscript = 
{ 
    param($output_path) 
    $hostname = (Get-CIMInstance CIM_ComputerSystem).Name 
    $objExcel = New-Object -ComObject Excel.Application 
    if ($objExcel.Version -eq "12.0") 
    { 
     $HKEY_USERS = Get-ChildItem REGISTRY::HKEY_USERS | where-object { ($_.Name -like "*S-1-5-21*") -and ($_.Name -notlike "*_Classes") } 
     $Users = @() 
     $value = @() 
     foreach ($User in $HKEY_USERS) 
     { 
      $PROFILESID = Get-ChildItem REGISTRY::"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | Where-Object { $_.name -like "*" + $USER.PSChildName + "*" } 
      $SID = $PROFILESID.PSChildName 
      foreach ($value in $SID) 
      { 
       $key = Get-Item REGISTRY::HKEY_USERS\$VALUE\Software\Microsoft\Office\12.0\Outlook\Preferences -ErrorAction SilentlyContinue 
       $gold = $key.property 
       if($gold -like 'ShowAutoSug') 
       { 
        $grail = (Get-ItemProperty REGISTRY::HKEY_USERS\$VALUE\Software\Microsoft\Office\12.0\Outlook\Preferences).ShowAutoSug 
        $objSID = New-Object System.Security.Principal.SecurityIdentifier($value) 
        $objUser = $objSID.Translate([System.Security.Principal.NTAccount]) 
        $hostname, $objUser, $value , $grail | Add-Content $output_path 
       } 
       else 
       { 
        $objSID = New-Object System.Security.Principal.SecurityIdentifier($value) 
        $objUser = $objSID.Translate([System.Security.Principal.NTAccount]) 
        $hostname,$objUser, $value , "The Auto Complete is not disabled" | Add-Content $output_path 
       } 
      } 
     } 
    } 
} 

foreach($computer in $computers) 
{ 
    Invoke-Command -ComputerName $computer -ScriptBlock $setscript -ArgumentList $output_path 
} 

正確なエラーメッセージ:

Access to the path '\\mycomputername\powershell\output.csv' is denied. 
FullyQualifiedErrorId : GetContentWriterUnauthorizedAccessError,Microsoft.PowerShell.Commands.AddContentCommand 
+0

hmm。これはコピー貼り付けのエラーです。私のコードには2つのバックスラッシュがあります。 –

答えて

1

問題は、あなたが共有フォルダに出力を書き込むしようとしている「第2のホップ」をやっているということですが、これが必要です資格情報がターゲットコンピュータに委任されることを確認します。 ローカルホストとリモートコンピュータの両方でEnable-WSManCredSSPコマンドを使用してCredSSPを有効にする必要があります。 次に、invoke-commandでCreddSSPを使用する必要があります。

Invoke-Command -ComputerName $computer -ScriptBlock $setscript 
-ArgumentList $output_path -Authentication Credssp -Credential (Get-Credential) 
+0

こんにちは。私はそれについて考えました。しかし、共有フォルダは自分のコンピュータにあります。基本的にポイント "c"は私のPCであり、ポイントBはレジストリ値が引き出され、私のPCに書き込まれたPCであり、credsspを使用して私のqualmはセキュリティ上の問題です。私は他のPCに自分の資格情報を渡すことはできません。ありがとう –

+1

ことは、ポイントbの共有フォルダにアクセスしようとしていることです。そのポイントは「ポイントc」になります。それはあなたのコンピュータまたは別のものかどうかは関係ありません。あなたがUNCパスを使用しており、そのために "ポイントB"の資格が必要なためです。 –

0

私がリモートコンピュータとやり取りするとき、私は通常、完全なパスをc $で使います。あなたの場合に該当するかどうかは分かりません。従って:

"\\mycomputername\c$\powershell\output.csv" 
関連する問題