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

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 + '" )'
      
      






All Articles