কম্পিউটার সার্ভারে কম্পিউটার সার্ভারে রিমোট করা, কম্পিউটারের নাম নয় not


9

আমি কম্পিউটারের নামের চেয়ে সিএমএল ব্যবহার করে কোনও সার্ভারের সাথে কাজ করতে পাওয়ারশেল রিমোটিং পাওয়ার চেষ্টা করছি। স্থানীয় এবং দূরবর্তী উভয়ই মেশিন একই নেটওয়ার্ক এবং ডোমেনে রয়েছে।

আমি পাওয়ারশেল রিমোটিং সক্ষম করেছি এবং এটি কম্পিউটার নামের সাথে কাজ করে। আমি আমার বিশ্বস্ত হোস্টগুলি সিএনএমে সেট করেছি এবং সিএনএম-এর জন্য এসপিএন যুক্ত করেছি, তবে আমি যখন ইস্যু Enter-PSSession CNAMEকরি তখন নিম্নলিখিতগুলি পান:

Enter-PSSession : Connecting to remote server CNAME failed with the following
error message : WinRM cannot process the request. The following error
occurred while using Kerberos authentication: Cannot find the computer CNAME.
Verify that the computer exists on the network and that the name
provided is spelled correctly. For more information, see the
about_Remote_Troubleshooting Help topic.

এক্সিকিউটিং setspn -l COMPUTERNAMEআমাকে এটি দেয়:

Registered ServicePrincipalNames for CN=COMPUTERNAME,OU=SERVERS,DC=COMPANY,DC=private:
        WSMAN/CNAME
        WSMAN/COMPUTERNAME
        WSMAN/COMPUTERNAME.local
        TERMSRV/COMPUTERNAME
        TERMSRV/COMPUTERNAME.local
        HOST/COMPUTERNAME
        HOST/COMPUTERNAME.local

CNAME এর মাধ্যমে অ্যাক্সেস সক্ষম করার জন্য আর কী দরকার?

উত্তর:


5

আমি এই সমস্যাটি সমাধান করার জন্য যা করেছি তা হ'ল প্রবেশ-পিএসএসসেশনের জন্য একটি প্রক্সি ফাংশন তৈরি করা যা আমার জন্য সিএনএমকে সমাধান করে। আপনার সিএমএল কেন ব্যবহার করা প্রয়োজন তার উপর নির্ভর করে এটি আপনার ক্ষেত্রে কাজ করতে পারে না তবে এটি আমার পক্ষে কাজ করে।

প্রক্সি পাওয়ারশেল ফাংশন সম্পর্কিত বিশদ: http://www.windowsitpro.com/blog/powershell-with-a-purpose-blog-36/windows-powershell/powershell-proxy-funitions141413

সম্পূর্ণ ফাংশন:

function Enter-PSSession {
[CmdletBinding(DefaultParameterSetName='ComputerName')]
param(
    [Parameter(ParameterSetName='ComputerName', Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
    [Alias('Cn')]
    [ValidateNotNullOrEmpty()]
    [string]
    ${ComputerName},

[Parameter(ParameterSetName='Session', Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.Runspaces.PSSession]
${Session},

[Parameter(ParameterSetName='Uri', Position=1, ValueFromPipelineByPropertyName=$true)]
[Alias('URI','CU')]
[ValidateNotNullOrEmpty()]
[uri]
${ConnectionUri},

[Parameter(ParameterSetName='InstanceId', ValueFromPipelineByPropertyName=$true)]
[ValidateNotNull()]
[guid]
${InstanceId},

[Parameter(ParameterSetName='Id', Position=0, ValueFromPipelineByPropertyName=$true)]
[ValidateNotNull()]
[int]
${Id},

[Parameter(ParameterSetName='Name', ValueFromPipelineByPropertyName=$true)]
[string]
${Name},

[Parameter(ParameterSetName='Uri')]
[Parameter(ParameterSetName='ComputerName')]
[switch]
${EnableNetworkAccess},

[Parameter(ParameterSetName='ComputerName', ValueFromPipelineByPropertyName=$true)]
[Parameter(ParameterSetName='Uri', ValueFromPipelineByPropertyName=$true)]
[system.management.automation.pscredential]
${Credential},

[Parameter(ParameterSetName='ComputerName')]
[ValidateRange(1, 65535)]
[int]
${Port},

[Parameter(ParameterSetName='ComputerName')]
[switch]
${UseSSL},

[Parameter(ParameterSetName='ComputerName', ValueFromPipelineByPropertyName=$true)]
[Parameter(ParameterSetName='Uri', ValueFromPipelineByPropertyName=$true)]
[string]
${ConfigurationName},

[Parameter(ParameterSetName='ComputerName', ValueFromPipelineByPropertyName=$true)]
[string]
${ApplicationName},

[Parameter(ParameterSetName='Uri')]
[switch]
${AllowRedirection},

[Parameter(ParameterSetName='Uri')]
[Parameter(ParameterSetName='ComputerName')]
[ValidateNotNull()]
[System.Management.Automation.Remoting.PSSessionOption]
${SessionOption},

[Parameter(ParameterSetName='Uri')]
[Parameter(ParameterSetName='ComputerName')]
[System.Management.Automation.Runspaces.AuthenticationMechanism]
${Authentication},

[Parameter(ParameterSetName='Uri')]
[Parameter(ParameterSetName='ComputerName')]
[string]
${CertificateThumbprint})


begin
{
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer))
        {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $PSBoundParameters['ComputerName'] = ([System.Net.Dns]::GetHostByName($PSBoundParameters['ComputerName'])).HostName
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Microsoft.PowerShell.Core\Enter-PSSession', [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters }
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process
{
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end
{
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
<#

.ForwardHelpTargetName Enter-PSSession
.ForwardHelpCategory Cmdlet

#>

}

আমি যুক্ত করা একমাত্র লাইনটি ছিল:

$PSBoundParameters['ComputerName'] = ([System.Net.Dns]::GetHostByName($PSBoundParameters['ComputerName'])).HostName

এটি কেবল নেটিভ এন্টার-পিএসএসশন কল করার আগে প্রক্সি ফাংশনে সিএনএমকে এফকিউডিএন থেকে সমাধান করে।

এটি আমাকে গ্রুপ নীতি মাধ্যমে আমার বিশ্বাসযোগ্য হোস্টে * .mydomain.local সেট করতে দেয় এবং আমি অতিরিক্ত এসপিএন ইত্যাদির সাথে ঝামেলা না করেই "এন্টার-পিএসএসশন শর্টনাম" বা "এন্টার-পিএসএসশন সিএনএম" ব্যবহার করতে পারি etc.


সুন্দর কাজ করে ধন্যবাদ.
majkinetor
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.