添加内容命令给我“访问被拒绝”UnautorizedAccessException错误

时间:2017-02-04 12:50:02

标签: powershell

我试图在一堆远程计算机中找到一个注册表项值。并将值写回我的PC中的共享文件夹。但是,当我指定要写入我的PC中的共享文件夹的输出时,我得到访问被拒绝错误。我作为管理员运行PowerShell。

$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

2 个答案:

答案 0 :(得分:1)

问题在于你正在做第二跳"当您尝试将输出写入共享文件夹时,这需要将凭据委派给目标计算机。 您需要在localhost和远程计算机上使用命令Enable-WSManCredSSP启用CredSSP。 然后,您必须在invoke-command中使用CreddSSP。

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

答案 1 :(得分:0)

当我与远程计算机交互时,我通常使用c $的完整路径。不知道它是否适用于您的情况。所以:

"\\mycomputername\c$\powershell\output.csv"