0

私がやろうとしていることはかなり単純に思えますが、私はそれを理解することができません。Powershellスクリプトを実行してRDPセッションを起動し、ファイルをc:\ディレクトリにコピーして、コマンドラインからそのファイルを実行しようとしています。サーバーIP、ユーザー名、パスワードなどのcsvファイルからパラメーターを取得してループさせたいです。したがって、基本的に、手順は次のようになります...

  1. csvファイルからinforをインポートして、変数を定義します
  2. 指定されたファイルをコピーします(その後ループします)
  3. mstsc.exeを起動します
  4. サーバーのIP、ユーザー名、パスワードを入力します
  5. コピーしたファイルをc:\ディレクトリに貼り付けます
  6. cmd.exeを起動します
  7. c:\ディレクトリにコピーされたファイルを実行します
  8. サーバーからログオフします

私は誰かがこれを手伝ってくれるかどうかを見たかったのです。私はPowerShellに不慣れで、多くのことをやり遂げることができました。誰かが私を正しい方向に向けることができれば、あるいは空白を埋めるためのコードを私に提供することができれば、私はそれを大いに感謝します。

4

2 に答える 2

1

psexec を使用してリモート インストールを実行しました。psexec \\servername -u domain\usernamr -p password cmd /c "msiexec /i program.msi

PSexec ダウンロード: https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

これは、RDP の代わりに psexec を使用してインストールをリモートで実行することを意味します。

作業を開始するための小さな PowerShell スクリプトを作成しました。CSV ファイル (c:\info.csv) に、ServerName、UserName、Password の 3 つの列があるとします。

以下のコードを実行すると動作するはずですが、環境に合わせて最初の 4 行を変更してください。まず、スクリプトの動作を観察するサーバーを 1 つ配置します。

# Set intial variables
$CSVFile = "c:\info.csv"
$MSI = "\\servername\sharename\setup.msi"
$MSILog = "c:\Windows\temp\setup.log"
$Domain = "YourDomain"

# Import info from CSV file
$Servers = import-csv $CSVFile


# loop through each server
foreach ($server in $servers) {
         # run psexec on each server to install a program
         psexec \\$server.servername -u $Domain\$server.username -p $server.password -h cmd /c "msiexec /i $MSI /quite /l*v $MSILog"

}
于 2018-08-17T17:17:08.547 に答える
0

あなたが何をしようとしているのか正確にはわからないので、このコマンドを使用することをお勧めします。

Get-help Import-CSV
Get-help about_remoting これにより、mstsc.exe の処理が回避されます。

セッションに入り、このセッションに対して Invoke-Command を実行すると、そのサーバーでコマンドを実行できます。$session = New-PSSession -ComputerName Server1 -Credentials Get-Credential
Invoke-Command -Session $session -ScriptBlock {

}

Script ブロック内で、ファイルをコピーして実行するための powershell コマンドを指定します。

于 2012-06-20T14:20:47.197 に答える