PowerShellSet-ファイルサーバーへの場所PermissionDeniedunder Enter-PSSession

Aug 24 2020

私たちの会社には、リモートコンピューターを更新するためのスクリプトを実行したいファイルサーバーがあります。

すべてのコンピューターはドメイン内にあります。

コンピューターを使用して実行する場合(PowerShellは管理者として実行されるかどうか)

Set-Location -Path "\\fileserver.company.org\scripts_folder\"

できます

リモートコンピューター(同じサブネット)を使用している場合、同じユーザーに上記と同じコマンドが機能します。

しかし、私がするとき

Enter-PSSession -ComputerName PC-NAME -Credential my_username
Set-Location -Path "\\fileserver.company.org\scripts_folder\"

Set-Locationは戻ります

Set-Location : Access is denied
    + CategoryInfo          : PermissionDenied: (\\fileserver.company.org\scripts_folder\:String) [Set-Location], Unauthoriz
   edAccessException
    + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.SetLocationCommand

アクセスが拒否されるのはなぜですか?私がPowerShellを実行しているのはどのユーザーEnter-PSSessionですか?

回答

2 SimonS Aug 25 2020 at 20:23

私にはこのルックスが好きdouble hopsecond hop problem

「セカンドホップ問題」とは、次のような状況を指します。

  1. ServerAにログインしています。
  2. ServerAから、リモートPowerShellセッションを開始してServerBに接続します。
  3. PowerShell Remotingセッションを介してServerBで実行するコマンドは、ServerC上のリソースにアクセスしようとします。
  4. PowerShell Remotingセッションの作成に使用した資格情報がServerBからServerCに渡されないため、ServerC上のリソースへのアクセスは拒否されます。

あなたの場合、あなたのコンピューターはServerAであり、セッションに入るコンピューターはServerBであり、ファイルサーバーはServerCです。

コンピューターがWMF​​3.0以降を使用している場合は、PSSessionConfigurationそれに関連付けられた資格情報を使用してを作成できます。その後、ServerBでリモートセッションを作成するときにこの構成を使用できます

構成を作成するには、ServerBの昇格されたPowerShellでこのコマンドを実行し、ServerCのリソースにアクセスする権限を持つ資格情報を使用します

Register-PSSessionConfiguration -Name AdminCredConfig -RunAsCredential 'domain\mydomainaccount' -Force

次にPSSessionConfiguration、セッションに入るときに作成されたものを指定できます

Enter-PSSession -ComputerName ServerB -Credential my_username -ConfigurationName AdminCredConfig
Set-Location -Path "\\fileserver.company.org\scripts_folder\"

これは私の意見ではあなたの問題を解決する最も簡単な方法です。ただし、CredSSPなど、セカンドホップの問題を回避する方法は複数あります。あなたはMSドキュメントでそれらについて読むことができます

WMF 3.0以降を使用していないコンピューターの場合、Invoke-Command Script Block内で資格情報を渡す必要があります。これも簡単に実行できますが、あまり洗練されておらず、扱いにくいコーディングが必要です。

または、セカンドホップの問題について心配する必要がない方法を探してください。

miharix Aug 25 2020 at 21:56

私は自分の問題の根本を見つけました。それは「セカンドホップ問題」と呼ばれています

「セカンドホップ問題」とは、次のような状況を指します。

  1. ServerAにログインしています。

  2. ServerAから、リモートPowerShellセッションを開始してServerBに接続します。

  3. PowerShell Remotingセッションを介してServerBで実行するコマンドは、ServerC上のリソースにアクセスしようとします。

  4. PowerShell Remotingセッションの作成に使用した資格情報がServerBからServerCに渡されないため、ServerC上のリソースへのアクセスは拒否されます。

https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/ps-remoting-second-hop?view=powershell-7