harukeeeのブログ

@harukeee が書いています。

PowerShell で何でもリモート操作

Linux では当たり前の SSH のように Powershell をリモート実行する方法

 

意外とできる事を知らない人が多い。記事も割りと少なめ。

実は Powershell 万能説。

 

 

1.Powershell の起動

Windows 10 なら開いたフォルダの [メニュー] から起動できます。(8から?)

f:id:harukeee:20180220003847p:plain

 

 

2.Powershell のポリシーを設定

Set-ExecutionPolicy RemoteSigned

コマンド実行時の確認事項は「すべて続行」にします。

 

 

3.リモート接続の許可

(リモート接続先で実行)

Enable-PSRemoting
Enable-PSRemoting -SkipNetworkProfileCheck

(リモート接続元で実行)

Enable-PSRemoting -SkipNetworkProfileCheck
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" #接続先を許可

コマンド実行時の確認事項は「すべて続行」にします。

 

最後が少し妙な記述ですが、接続元 が 接続先 を許可することになります。

"*" はワイルドカード(全て) になります。

制限したい場合は "*" を ホスト名 や IPアドレス に変更してください。

 

 

4.リモート接続

Enter-PSSession -ComputerName pc-○○○○ -Credential Workgroup/harukeee

パスワード入力後、 Linux でいう SSH したのと同じ状態になります。

 

 

5.実行結果を リモート接続「元」に出力

4のリモート接続状態だと

dir > a.txt # ファイル一覧を a.txt に出力

と実行しても、リモート先にファイル出力されます。

 

手元に結果出力したい場合は、Invoke-Command を使います。リモート接続せずに

Invoke-Command 127.0.0.1 -Credential $credential -ScriptBlock { dir } > a.txt

 

もちろん変数に代入も可能です。

[string]$body = @()
$body = Invoke-Command 127.0.0.1 -Credential $credential -ScriptBlock { dir }

 

 

6.おまけ

冒頭で万能と言いいましたが、まだ全く万能っぽさがありません。

少し万能っぽいコードを紹介します。

 

IE で Yahoo を開き『powershell ie』と入力し、検索ボタン押す」コードです。

# 開きたいURL
Set-Variable uri 'http://www.yahoo.co.jp/' -Option Constant

# InternetExplorer を起動
$ie=new-object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("$uri")

# ページの表示を待つ
While($ie.Busy){
    start-sleep 1
}

# 表示されている HTML を取得
$doc=$ie.document
# HTML から 検索ボックス を探す
$dom_srchtxt=$doc.getElementById("srchtxt")
$dom_srchtxt.value = "powershell ie"
$dom_srchbtn=$doc.getElementById("srchbtn")
$dom_srchbtn.click()

「sample.ps1」という名前で保存し、ファイルを右クリックして

PowerShell で実行」してみましょう。Yahooの検索結果がでるはずです。

 

あなたがパソコン上でしている操作は、Powershell でほぼ全て行えます。

怖い話のようですが、なんでも自動化できるって事です。

 

AI を待たずにできる自動化、進めてみませんか?

 

おわり。