web-dev-qa-db-ja.com

PowershellNew-PSSessionアクセスが拒否されました-管理者アカウント

PowerShell PSSessionコマンドレットを使用しようとしましたが、アクセス拒否エラーに苦労しています。

管理者アカウントを使用してコマンドNew-PSSession(またはEnter-PSSession)を実行しようとしていますが、残念ながらアクセス拒否エラーが発生します。

私は信じるすべての指示に正しく従います。他のサーバーで問題なくそれらのコマンドを実行できるからです。

さらに、test-wsmanから返信があったことをお知らせします。ビルトイン管理者アカウントを使用していて、すでにSet-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUIをチェックしています。すべての権限は問題ないようです。助けを求めて、これ以上のアイデアはありません。

[〜#〜] update [〜#〜]

私は1つの興味深い行動を見つけました:

それを仮定しましょう:

  • マシンのIPアドレスは22.222.222.222です
  • 管理者資格情報を使用してリモートデスクトップ経由でログに記録します

次のコマンドを使用します。

new-pssession // access denied

new-pssession localhost // access denied

new-pssession 127.0.0.1 // access denied

new-pssession 22.222.222.222 // Session created ! It's working !

new-pssession 22.222.222.222 -Credential Get-Credential // access denied (using the same administrator credentials which I'm using for RDP)

まったく同じコマンドを実行すると、他のサーバーにそれを追加できます。すべてのコマンドが成功します。

何か案は?

4
Piotr Czarnecki

PSセッションは、リモートシステムへのアクセスに使用されます。そのためには、いくつかの構成を行う必要があります。

1) winrmサービスがすべての宛先システムとローカルシステムで実行されていることを確認してください。

2) PSRemotingを有効にする必要があります。 Enable-PSRemotingは、WS-Manで送信されたPowerShellリモートコマンドを受信するようにコンピューターを構成します。

したがって、管理者としてWindowsPowerShellを起動します

Enable-PSRemoting –Force

WinRMのローカルコンピューターの信頼できるホストのリストにリモートコンピューターを追加する必要があります。これを行うには、次のように入力します。

winrm s winrm/config/client '@{TrustedHosts="RemoteComputer"}'

4)以下を使用して構成を確認します。

winrm quickconfig

完了したら、New-Pssessionコマンドを使用して、宛先システムとの対話型セッションを作成できます。

それ以外の場合は、Invoke-Commandを使用して、次のようなリモート操作を実行できます。

コメントセクションで、それがどのように機能する必要があるかについて述べました。 サンプル:

$username = "Username"
$password = "Password"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr

# will list all the processess in the remote system 
# if you are the entireprise admin or the domain admin then you do not have to pass the credentials. It will take the windows authentication by default.
Invoke-Command -ComputerName RemoteServer -ScriptBlock {Get-Process } -Credential $cred

あなたが質問を更新したので:私はあなたに点ごとに言いましょう:

127.0.0.1およびlocalhost-どちらもローカルシステムを指しています。ローカルシステムの信頼できるホストリストにそれらを追加する必要があることを意味します。 PSコンソールですべてのpsコマンドレットを直接実行できるため、ローカルシステムにPSSessionを使用することはお勧めできません。

22.222.222.222-信頼できるホストリストに追加し、デフォルトでWindows認証を使用しているため

22.222.222.222 -Credential Get-Credential ----形式が少し間違っているため、機能しません。このように使用します:

New-PSSession -ComputerName 22.222.222.222 -Credential (Get-Credential)

それがあなたを助けることを願っています。

1
Ranadip Dutta

私はこの正確な問題を抱えていましたが、渡したユーザー名はFQDNである必要があることがわかりました。つまり、ユーザー名だけでなく、username @ domain.comです。私がそれに更新すると、それは機能しました。

1
Scott

これを試してみてください: https://www.powershellgallery.com/packages/Invoke-PSSession

セッションを呼び出してから、指定した資格情報を使用してPSSessionConfigurationを登録します。基本的に、そのDoubleHopの資格情報を提供します

0
Marc Kellerman