Переменная в верхней части скрипта определяет несколько команд/переменных для New-PSDrive
, а также подключение и установку. После этого создается функция для открытия текстового файла и извлечения из него информации. Я знаю, что эта часть работает, потому что я использую ее в двух других сценариях. Наконец, скрипт выполняет команды в первой переменной.Установить программу удаленно с помощью Invoke-Command
Скрипт будет отображаться как работает успешно, но проверка удаленного компьютера показывает, что ничего не произошло.
Перед делать какие-либо из этой деятельности, удаленный компьютер имеет сценарий запуска против этого:
- позволяет PSRemoting (настройка правил брандмауэра и запуску WinRM) и
- обходит политику выполнения.
После этих шагов, скрипт, приведенный ниже, запускается для установки части программного обеспечения.
$eAudIT2014V2Install = {
$eAudIT2014V2password = ConvertTo-SecureString "PasswordHere" -AsPlainText -Force
$eAudIT2014V2cred = New-Object System.Management.Automation.PSCredential('domain\user', $eAudIT2014V2password)
$eAudIT2014V2drive = New-PSDrive -Name eAudIT2014V2 -PSProvider FileSystem -Root "\\Server\Share" -Credential $eAudIT2014V2cred
$eAudIT2014V2job = Start-Job {"eAudIT2014V2:\Setup.cmd"}
Wait-Job $eAudIT2014V2job
Receive-Job $eAudIT2014V2job
}
Function Get-OpenFile($initialDirectory) {
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = $initialDirectory
$OpenFileDialog.ShowDialog()
$OpenFileDialog.Filename
$OpenFileDialog.ShowHelp = $true
}
$InputFile = Get-OpenFile
if ($InputFile -eq "Cancel") {
Write-Host "Canceled By User"
exit
} else {
$Computers = @(Get-Content -Path $InputFile)
}
foreach ($computer in $computers) {
Write-Host "Installing eAudIT 2014V2 on Selected Computers"
Invoke-Command $eAudIT2014V2Install
}
Я заметил, что если я скажу, чтобы этот скрипт запустить что-то основное, как notepad.exe, процесс Dllhost начинается на машине, но блокнота никогда не делает. Что я делаю не так?
Большое спасибо за ввод. Добавление этой линии компьютеров фактически привело к удаленным запускам процессов, но на экране ничего не происходит, и, конечно же, нет никакой активности установки файла установки, который я запускал. Идеи? –
Не забывайте, что команды powershell запускаются под вашим собственным сеансом. Таким образом, вошедший в систему пользователь не увидит, что вы делаете, так как это разные сеансы. Если вы посмотрите в диспетчере задач во всех процессах, вы, вероятно, увидите, что блокнот запущен. Если вы хотите открыть блокнот на удаленном компьютере, который виден зарегистрированному пользователю, одним из способов, которым вы могли бы это сделать, было бы запланированное задание. – kfordham281