powersheel远程连接密码加密连接高级玩法

ConvertTo-SecureStringConvertFrom-SecureString 命令都支持选项 -Key。在处理密码时通过使用 Key 选项可以提供额外的安全性,并且允许在不同的环境中使用密码文件。

先生成 32 位的 Key 并保存在文件 aes.key 中:

	$keyFile = "C:\powersheel\aes.key"  #加密的key准备放在这个D盘,最好放在一个文件夹里面
$key = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($key)
$key | out-file $keyFile

使用 Key 生成并保存密码文件:

	Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString -key $key | Out-File "C:\powersheel\pwd.txt"

使用密码文件创建和 Key 文件创建 Credential 信息:

	$userName = "YourUserName"
$passwdFile = "C:\powersheel\pwd.txt"
$keyFile = "C:\powersheel\aes.key"
$key = Get-Content $keyFile
$Cred = New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $userName, (Get-Content $passwdFile | ConvertTo-SecureString -Key $key)

通过这种方法,把 pwd.txtaes.key 文件拷贝到其它的机器上也是可以工作的。但是我们需要额外维护一个 key 文件的安全,这一般通过设置文件的访问权限就可以了。

以上是将密码通过32位的key加密到文件里面,下面的第一个远程连接会用到

第1种方法远程连接(密码加密):

	$userName = "administrator"
$passwdFile = "C:\powersheel\pwd.txt"
$keyFile = "C:\powersheel\AES.key"
$key = Get-Content $keyFile
$cred = New-Object -TypeName System.Management.Automation.PSCredential
-ArgumentList $userName, (Get-Content $passwdFile | ConvertTo-SecureString -Key $key)
$remoteServer='www.bai.com' #连接方法
function connRemoteSever {
#连接远程服务器
Param ($remoteServer,$cred)
#$passwordSecure = ConvertTo-SecureString $pwd -AsPlainText -Force
#$cred = New-Object pscredential($userName, $passwordSecure)
Write-Host '-----------powersheel默认Port是5985、5986-----------'
$mySession = New-PSSession -ComputerName $remoteServer -Port 55985 -Credential $cred
return $mySession
} #连接到远程服务器
$webSession=connRemoteSever $remoteServer $cred Invoke-Command -Session $webSession -ScriptBlock { dir d:
Write-Host '-----------1.在覆盖网站内容前,先停止网站-----------'
#Import-Module WebAdministration; Stop-WebAppPool -Name "$appPoolName"
#Import-Module WebAdministration; Stop-WebSite -Name "$appWebSiteName" Write-Host '-----------2.备份IIS中绩效的网站-----------'
#Copy-Item -Path "D:\web\kpi_dev" "D:\web\Backup\kpi_dev_$backtime" -Recurse -Force Write-Host '-----------3.删除IIS绩效后端-----------'
#Remove-Item -Path $DelFilePath -Recurse -Force Write-Host '-----------4.复制最新绩效后端到IIS发布的文件夹-----------'
#Copy-Item -Path "D:\web\WebFTP\publish_kpi_BackEnd_dev\$banben\*" "D:\web\kpi_dev\BackEnd\" -Recurse -Force Write-Host '-----------5.复制web.config到IIS发布的文件夹-----------'
#Copy-Item -Path "D:\web\kpi_dev\web.config" "D:\web\kpi_dev\BackEnd\" -Recurse -Force Write-Host '-----------6.启动网站-----------'
#Import-Module WebAdministration; Start-WebAppPool -Name "$appPoolName"
#Import-Module WebAdministration; Start-WebSite -Name "$appWebSiteName" }

第2种方法远程连接(密码不加密):

$userName = 'opsadmin'
$pwd = 'ywX*'
$remoteServer='192.168.0.100' function connRemoteSever {
# 连接远程服务器
Param ($userName,$pwd,$remoteServer,$port) #参数 $passwordSecure = ConvertTo-SecureString $pwd -AsPlainText -Force
$cred = New-Object pscredential($userName, $passwordSecure)
$mySession = New-PSSession -ComputerName $remoteServer -Port 5985 -Credential $cred
return $mySession
} # 连接到远程服务器
$webSession=connRemoteSever $pwd $userName $remoteServer $banben='V'+$env:BUILD_NUMBER #这边是在windows中的jenkins中使用到的
$backtime=Get-Date -Format 'yyyy_M_d_Hms'
$DelFilePath='D:\web\kpi_dev\BackEnd\*'
$DelFileExcludePath='D:\web\kpi_dev\BackEnd\wwwroot*'
$appPoolName='kpi_dev'
$appWebSiteName='kpi_dev' Invoke-Command -Session $webSession -ScriptBlock {
param($appPoolName,$appWebSiteName,$backtime,$DelFilePath,$banben) #以下都是一些操作都是一些基本操作命令,大家有用到的话借鉴下
dir d:
Write-Host '-----------1.在覆盖网站内容前,先停止网站-----------'
#Import-Module WebAdministration; Stop-WebAppPool -Name "$appPoolName"
#Import-Module WebAdministration; Stop-WebSite -Name "$appWebSiteName" Write-Host '-----------2.备份IIS中绩效的网站-----------'
#Copy-Item -Path "D:\web\kpi_dev" "D:\web\Backup\kpi_dev_$backtime" -Recurse -Force Write-Host '-----------3.删除D:\web\kpi_dev\BackEnd 文件夹下除了wwwroot文件夹,其他的全删除-----------'
#Remove-Item -Path $DelFilePath -Recurse -Force Get-ChildItem -Path $DelFilePath -Recurse -exclude wwwroot | Select -ExpandProperty FullName |
Where {$_ -notlike $DelFileExcludePath} |
sort length -Descending |
Remove-Item -force Write-Host '-----------4.复制最新绩效后端到IIS发布的文件夹-----------'
#Copy-Item -Path "D:\web\WebFTP\publish_kpi_BackEnd_dev\$banben\*" "D:\web\kpi_dev\BackEnd\" -Recurse -Force Write-Host '-----------5.复制web.config到IIS发布的文件夹-----------'
#Copy-Item -Path "D:\web\kpi_dev\web.config" "D:\web\kpi_dev\BackEnd\" -Recurse -Force Write-Host '-----------6.启动网站-----------'
#Import-Module WebAdministration; Start-WebAppPool -Name "$appPoolName"
#Import-Module WebAdministration; Start-WebSite -Name "$appWebSiteName" } -ArgumentList $appPoolName,$appWebSiteName,$backtime,$DelFilePath,$banben

第3种方法远程连接:

$Username = 'opsadmin' #远程电脑的用户名
$Password = 'ywX*^R' #远程电脑的密码
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
Invoke-Command -ComputerName 192.168.0.100 -Port 5985 -ScriptBlock { dir D:\web\Backup #查看当前远程服务器这个文件夹下得目录列表情况 } -credential $Cred

powersheel远程连接方法操作的更多相关文章

  1. Python 使用Python远程连接并操作InfluxDB数据库

    使用Python远程连接并操作InfluxDB数据库 by:授客 QQ:1033553122 实践环境 Python 3.4.0 CentOS 6 64位(内核版本2.6.32-642.el6.x86 ...

  2. Java java jdbc thin远程连接并操作Oracle数据库

    JAVA jdbc thin远程连接并操作Oracle数据库 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 编码工具:Eclipse 编码平台:W ...

  3. Mysql开启远程连接方法

    分类: 数据库开发技术 解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要 ...

  4. 基于Git项目管理客户端SourceTree的免注册安装及远程连接方法

    作为程序员,不可避免的要在github上查询代码,而在企业项目中,为了使得项目好管理需要使用项目管理客户端,所以接下来详细讲解一下基于git的sourceTree在windows系统下的安装及与Git ...

  5. redis 远程连接方法

    解决方法 1.修改redis服务器的配置文件 vi redis.conf 注释以下绑定的主机地址 # bind 127.0.0.1 或 vim  redis.conf bind  0.0.0.0 pr ...

  6. mysql配置远程连接方法之一(改表法)

    1.问题:如果在远程连接报错:1130-host ... is not allowed to connect to this MySql server,可能是你的帐号不允许从远程登陆,只能在local ...

  7. AIX加入能telnet远程连接方法的帐户

    AIX 加入该账户可以使用命令mkuser 和 SMIT 两种方法,这里有SMIT方式 1.采用root 帐户登录AIX 2.输入 smitty user 3.选择Add a User 4.输入&qu ...

  8. 配置sql server 允许远程连接

    如果要想远程连接数据库那么则需要在一个局域网中或一个路由器中才可以做到 接下来就是具体的操作检查sqlserver数据库是否允许远程连接 具体操作为 (1)打开数据库,用本地帐户登录,右击第一个选项, ...

  9. 电脑远程连接windows阿里云服务器解决卡顿【小白教程】

    我们在阿里云服务器网页上进行远程连接进行操作,会卡顿.解决办法如下: 1.登录阿里云服务器,进入服务器控制台,复制服务器IP:  2.回到桌面,打开cmd命令窗口,输入mstsc  3.在‘’计算机’ ...

随机推荐

  1. 最近见到一个用react native实现的标尺动画,不知道如何实现 帖两张图(新知食App)

    很恶心,这款App的标尺没有做兼容,我在模拟上看不到效果,无法说明我想做出的东西的效果,无奈粘一张图吧! 就是这么一个屌样子,如何实现?

  2. LeetCode题解之Number of Segments in a String

    1.题目描述 2.题目分析 找到字符串中的空格即可 3.代码 int countSegments(string s) { ){ ; } vector<string> v; ; i < ...

  3. MATLAB中批量导入.mat文件(每个文件多变量)

    一.新建MATLAB script(.m文件):readall_mat.m 二.代码如下: function data = readall_mat(path) % READALL_MAT 读取所有文件 ...

  4. Azure 中的 Windows 虚拟机概述

    Azure 虚拟机 (VM) 是 Azure 提供的多种可缩放按需分配计算资源之一. 通常情况下,如果需要以更大的力度(相对于其他控制选项)控制计算环境,则应选择 VM. 本文介绍创建 VM 之前的注 ...

  5. ASP.NET获取服务器信息大全

    p>服务器IP:<%=Request.ServerVariables["LOCAL_ADDR"]%></p> <p>服务器名:<%= ...

  6. Excel思考问题的方式

    Excel思考问题的方式 一.写需求,说我要什么数据 好比如,现在咱们需要将第一周.第二周.第三周.第四周.….等E:E列里的"每一周的 第二个数值"提取出来.那么我们手动提取了几 ...

  7. phpstorm添加laravle语法支持

    PHPStorm神器可以支持更友好的laravel框架代码提示,只需要执行如下才做: 第一步:在项目的composer.json中添加如下一行 "require": { " ...

  8. PyQt5--ShowTips

    # -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...

  9. initialProps被React-Navigation的navigation属性覆盖解决方案

    怎么开场对我来说一个是个很纠结的问题,Emmm这应该算个好开场. 最近在做一个RN的app端调试工具,在把它嵌入原生app中的时候遇到了一个问题,RN组件里面接受不到原生传过来的initialProp ...

  10. Netty 聊天小程序

    这节讲解基于 Netty 快速实现一个聊天小程序. 一.服务端 1. SimpleChatServerHandler(处理器类) 该类主要实现了接收来自客户端的消息并转发给其他客户端. /** * 服 ...