превратить string в scriptblock

от автора

Если вы используете 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 #> 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 + '" )' 

ссылка на оригинал статьи https://habrahabr.ru/post/278693/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *