densan
15-02-2018, 10:27
Здравствуйте.
Знакомлюсь с Powershell в режиме получения новых знаний при решении конкретных задач.
Есть задача установить на большом количестве компьютеров заказную установку MS Office 2010.
Скрипт для заказной установки есть и работает.
На части ПК дистрибутив MS Office 2010 присутствует в каталоге c:\distr. Проверка дистрибутива и запуск установки реализовано.
Не могу реализовать запуск установки из сетевой папки, нужно авторизоваться на удаленном сервере.
Стартующий скрипт:
$currentFolder=$MyInvocation.MyCommand.Path | Split-Path -Parent
$currentFolder=$currentFolder+"\"
$fileIN = $currentFolder+"pc.txt"
$fileOffLine= $currentFolder+"offline.txt"
$report= $currentFolder+"report.txt"
$fileFolder=$currentFolder+"files\"
$scriptFile=$currentFolder+"local.ps1"
$hostnames=get-content $fileIn
ForEach ($hostname in $hostnames)
{
if ( Test-Connection $hostname -Count 2 -Quiet:$true )
{
Invoke-Command -FilePath $scriptFile -ComputerName $hostname
} ### ONLINE
else
{
$hostname+" offline"
$hostname | Out-File $fileOffLine -Append
} ### OFFLINE
}
скрипт который выполняется на удаленных ПК
$localsetupfile="c:\distr\MS_Office_2010_Prof_Plus_SP1_64Bit_Russian_CORE_MLF_X17-77007\setup.exe"
function check_mso_version ()
#проверяем наличие установленного MS Office 2010
#т.к. через gwmi долго, иcпользуем такой способ
#$be=New-Object -ComObject Excel.Application
{
try
{
$be=((New-Object -ComObject Excel.Application).version).Substring(0,2)
}
catch
{
$be=""
}
Return $be
}
function check_distr ($file)
{
$isfile= Test-Path $file
if($isfile -eq "True")
{
# $report=$env:COMPUTERNAME+" дистрибутив есть"
# Write-host $report
}
else
{
# Write-host "Дистрибутив не найден"
}
Return $isfile
}
function install_excel ()
{
}
$version=check_mso_version
if (!$version)
{
# Write-Host "Excel не установлен"
if (check_distr($localsetupfile))
{
Write-Host "$env:COMPUTERNAME. Excel не установлен, дистрибутив найден"
cmd /c "c:\distr\MS_Office_2010_Prof_Plus_SP1_64Bit_Russian_CORE_MLF_X17-77007\files\only_excel.cmd"
}
else
{
Write-Host "$env:COMPUTERNAME. Excel не установлен, дистрибутив не найден"
# запуск установки из сетевой папки с авторизацией
}
}
else
{
Write-Host "$env:COMPUTERNAME. Excel установлен"
}
Подскажите, как можно реализовать авторизацию на удаленном сервере?
Знакомлюсь с Powershell в режиме получения новых знаний при решении конкретных задач.
Есть задача установить на большом количестве компьютеров заказную установку MS Office 2010.
Скрипт для заказной установки есть и работает.
На части ПК дистрибутив MS Office 2010 присутствует в каталоге c:\distr. Проверка дистрибутива и запуск установки реализовано.
Не могу реализовать запуск установки из сетевой папки, нужно авторизоваться на удаленном сервере.
Стартующий скрипт:
$currentFolder=$MyInvocation.MyCommand.Path | Split-Path -Parent
$currentFolder=$currentFolder+"\"
$fileIN = $currentFolder+"pc.txt"
$fileOffLine= $currentFolder+"offline.txt"
$report= $currentFolder+"report.txt"
$fileFolder=$currentFolder+"files\"
$scriptFile=$currentFolder+"local.ps1"
$hostnames=get-content $fileIn
ForEach ($hostname in $hostnames)
{
if ( Test-Connection $hostname -Count 2 -Quiet:$true )
{
Invoke-Command -FilePath $scriptFile -ComputerName $hostname
} ### ONLINE
else
{
$hostname+" offline"
$hostname | Out-File $fileOffLine -Append
} ### OFFLINE
}
скрипт который выполняется на удаленных ПК
$localsetupfile="c:\distr\MS_Office_2010_Prof_Plus_SP1_64Bit_Russian_CORE_MLF_X17-77007\setup.exe"
function check_mso_version ()
#проверяем наличие установленного MS Office 2010
#т.к. через gwmi долго, иcпользуем такой способ
#$be=New-Object -ComObject Excel.Application
{
try
{
$be=((New-Object -ComObject Excel.Application).version).Substring(0,2)
}
catch
{
$be=""
}
Return $be
}
function check_distr ($file)
{
$isfile= Test-Path $file
if($isfile -eq "True")
{
# $report=$env:COMPUTERNAME+" дистрибутив есть"
# Write-host $report
}
else
{
# Write-host "Дистрибутив не найден"
}
Return $isfile
}
function install_excel ()
{
}
$version=check_mso_version
if (!$version)
{
# Write-Host "Excel не установлен"
if (check_distr($localsetupfile))
{
Write-Host "$env:COMPUTERNAME. Excel не установлен, дистрибутив найден"
cmd /c "c:\distr\MS_Office_2010_Prof_Plus_SP1_64Bit_Russian_CORE_MLF_X17-77007\files\only_excel.cmd"
}
else
{
Write-Host "$env:COMPUTERNAME. Excel не установлен, дистрибутив не найден"
# запуск установки из сетевой папки с авторизацией
}
}
else
{
Write-Host "$env:COMPUTERNAME. Excel установлен"
}
Подскажите, как можно реализовать авторизацию на удаленном сервере?