文字列をスクリプトブロックに変換

powershellを使用している場合、Invoke-Commandを介してリモートマシンに文字列を送信できないことに気付くかもしれません

最初に文字列をスクリプトブロックに変換する必要があります
$scriptBlock = [Scriptblock]::Create($string) 

例:
 $remoteCommand = @" Import-Module ActiveDirectory New-ADOrganizationalUnit -name "@ $scriptBlock = [Scriptblock]::Create($remoteCommand) Invoke-Command -ComputerName AD01 -ScriptBlock $scriptBlock 


あなたもこのための機能を作ることができます
 <# Function to Convert a String into a Script Block #> function ConvertScriptBlock { Param( [Parameter( Mandatory = $true, ParameterSetName = '', ValueFromPipeline = $true)] [string]$string ) $scriptBlock = [scriptblock]::Create($string) return $scriptBlock } 


翻訳者からの追加:
コマンドはセミコロンでリストできます
 $sb = 'get-process; dir' 

そのように使用することができます
 #             $sb= '$admin = [ADSI]"WinNT://localhost/admin,User"; $admin.SetPassword( "' + $new_pass + '" )' 


Source: https://habr.com/ru/post/J278693/


All Articles