powershell invoke-command访问被拒绝的异常

时间:2017-07-10 23:11:32

标签: powershell powershell-v2.0 invoke-command

我有以下脚本在远程计算机上运行一些基本命令并将输出记录到共享。我在共享上获得访问被拒绝的例外,即使该共享拥有包括我执行脚本在内的所有人的完全控制访问权限,

脚本:

 invoke-command -session $s -ScriptBlock {
    param($log) 
    cd 'c:\temp' | out-file $log -NoClobber
    cmd /c 'dir' | out-file $log -NoClobber
} -argumentList '\\share_location\log_file_path.log'

fyi,在上面的脚本中,会话$ s是使用我的凭据生成的。

异常:

Access to the path '\\share_location\log_file_path.log' is denied.
+ CategoryInfo          : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

有人可以建议我在这里失踪吗?

1 个答案:

答案 0 :(得分:0)

启用PSRemoting服务以自动启动

在主机和远程计算机上

Set-Service winrm -StartupType Automatic 
Start-Service winrm

启用PSREmoting

在主机和远程计算机上

EnablePSRemoting -Force

将计算机添加到受信任的主机

在远程计算机上

Set-Item wsman:\localhost\Client\TrustedHosts -Value "$(hostname),*$((Get-WmiObject Win32_ComputerSystem).Domain)"

在Powershell远程处理中启用多跳

确定允许Creds通过的主机

Enable-WSManCredSSP –Role Client –DelegateComputer   "$(hostname),*$((Get-WmiObject Win32_ComputerSystem).Domain)"

在源计算机上。

Enable-WSManCredSSP –Role Server

您必须指定身份验证和凭据

在主机上

$Cred = [System.Management.Automation.PSCredential]::new("<username>",$("<Password>" | ConvertTo-SecureString -AsPlainText -Force))
invoke-command -ComputerName localhost -ScriptBlock {Write-Host $args[0]} -ArgumentList "Hello!, It Works" -Authentication Credssp -Credential $cred

参考

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_troubleshooting?view=powershell-6