は、おそらく最高のGroup Policyを介して達成されます。
グループポリシーを使用できない場合は、対象のシステムのOSによっては、他のいくつかのソリューションのいずれかを使用できる可能性があります。あなたは次の操作を行うことができ、彼のソリューションを使用してWinRMなしまたはWindows 10より古いリモートコンピュータ上の輸入を許可するようにカバーの下に.NETを使用しています
Boe Prox wrote an Import-Certificate機能と説明:
$File = "C:\temp\SomeRootCA.cer"
$Computername = 'Server1','Server2','Client1','Client2'
Import-Certificate -Certificate $File -StoreName Disallowed -StoreLocation LocalMachine -ComputerName $Computername
は、Windows上にある場合10は内蔵のImport-Certificateを使用できますが、これはローカルシステムでのみ機能します。したがって、Invoke-Command(WinRMが必要)でラップするか、Invoke-WMIMethodにフォールバックする必要があります。アウトプットを使用したり作業したりするのはあまり親切ではありませんが、うまくいくでしょう。これは、WinRMなしでリモートコンピュータ上で関数を実行する実例です。複雑なコマンドの場合は、 - EncodedCommand parameter of powershell.exeを使用します。私たちは、リモートコンピュータ上のプロセス
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "powershell.exe -encodedcommand $encoded" -ComputerName Computer1
$encoded = [Convert]::ToBase64String(
[System.Text.Encoding]::Unicode.GetBytes(
{Import-Certificate -FilePath C:\temp\somerootca.cer -CertStoreLocation cert:\localmachine\disallowed}
)
)
スポーンを使用するコマンドをエンコードし
Copy-Item "C:\temp\SomeRootCa.cer" "\\Computer1\C$\temp\"
2つのホップの問題を回避するには、リモートシステムに
コピー証明書お使いのコンピュータで次のような出力が得られます
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ProcessId : 8748
ReturnValue : 0
PSComputerName :
成功を示す0の戻り値が唯一あなたが実行されたコマンドが成功したことはない、PowerShellのが生み出されたことを示していることに注意してください。本番環境へForeach-Objectと
Get-Content C:\some\file\name\here.txt | Foreach-Object -begin {
$encoded = [Convert]::ToBase64String(
[System.Text.Encoding]::Unicode.GetBytes(
{Import-Certificate -FilePath C:\temp\somerootca.cer -CertStoreLocation cert:\localmachine\disallowed}
)
)
} -process {
if(Test-Connection $_ -quiet){
Copy-Item "C:\temp\SomeRootCa.cer" "\\$_\C$\temp\"
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "powershell.exe -encodedcommand $encoded" -ComputerName $_
}
}
Get-Contentはコピーしないでください/パスタこの:あなたがコマンドにそれを焼く必要がありますいくつかのログをしたい場合は、
EDITをコードします。それを読んで何が起こっているのか理解する。関数の一部をISE to debugで使用し、ビット単位でまとめてください。
また、最小限の研究(Get-ContentやForeach-Objectなど)を行わずにSSCCEと表示されている場合、質問はトピックとしてフラグが立てられ、閉じられる可能性があります。
「セキュリティのため」何ですか? – TheIncorrigible1
@ TheIncorrigible1これは古くからの "WinRMは安全ではありません"という誤りです。 –
コードに表示されている内容は、リモートシステム上の証明書をインポートするものではありません。 '$ server'を' ForEach'ループにパイプしますが、決して '$ _'を参照しないでください。乱数や、Catの品種をあなたの 'ForEach'ループにパイプすることもできます。 – TheMadTechnician