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