Если вы используете 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/
Добавить комментарий