Case

3,975 次浏览

PowerShell: 隐藏明文密码

本文描述如何加密 PowerShell 中的敏感信息,从而避免敏感信息(诸如密码)在代码中被显式的展现出来。这里我们使用 ConvertFrom-SecureString 命令来完成加密操作,需要注意的是,如果我们没有指定Key,那么,将采用基于 Windows 内置的 DPAPI 进行数据的加密。这种情况下,原文的加密和解密必须在同一台机器上,且基于同一个User去进行。

ConvertFrom-SecureString [-SecureString] <SecureString> [[-SecureKey] <SecureString> ] [ <CommonParameters>]

你可以从这里了解该命令的更多信息。

  • If no key is specified, the Windows Data Protection API (DPAPI) is used to encrypt the standard string representation.
    Your secret was automatically encrypted by the built-in Windows data protection API (DPAPI), using your identity and your machine as encryption key. So only you (or any process that runs on your behalf) can decipher the secret again, and only on the machine where it was encrypted.
    Continue reading
1,919 次浏览

Memo: 关于 Windows 10 使用的几个小提示

前几个月把单位和家里的电脑都升级到了 Windows 10 ,升级很顺利,使用起来也非常流畅。这里有几个小提示大家可以参考下:
(个人十分建议执行全新安装,通过近2个月的使用,升级版的 Windows 10 还是会出现一些奇葩问题的,比如过了一段时间 Windows Explorer 和 Microsoft Edge 经常性的自动重启,Skype、百度输入法莫名卡死等问题,但是全新安装的版本,并没有出现过这一类的问题)

1 如果是从 Windows 7/8 升级至 Windows 10 ,希望删除系统盘中旧版本 Windows 的文件(Windows.old),可以执行如下操作:
(1) 打开“这台计算机(This PC)”, 在C:盘上点击右键,选择属性
(2) 在常规页下,点击“磁盘清理(Disk Cleanup)”,稍等片刻后,点击新页面中的”清理系统文件(Clean up system files)”按钮
(3) 勾选中“以前版本的Windows安装(Previous Windows installation(s))”,点击确认,即可。

2 在使用Windows 10的过程中,如果希望快速切换多任务桌面,可以使用快捷键
Ctrl + Win + ←/→
也可以通过
Ctrl + Win + D 来新建 多任务桌面
或者使用
Ctrl + Win + F4 来关闭 多任务桌面
Continue reading

2,630 次浏览

PowerShell: 远程调用

通过本地程序调用 PowerShell 自定义脚本,我们可以有周期、计划性的执行一些扩展的操作,这在一定程度上提高了本地程序自身逻辑的扩展性。而在编写一段 PowerShell 脚本的过程中,也难免会遇到需要一段脚本在另一台计算机上远程执行的情形。例如,我们在执行一段 PowerShell 脚本时,需要向某个 AD Group 中添加一个 AD User,而这一操作需要在域控机器上才能执行,而此时,我们就会用到 PowerShell 远程调用执行代码。

在调用之前,我们需要保证 PowerShell 的远程调用设置是开启的。
1 启用远端计算机的 Windows Remote Management (WS-Management) service.
(1) 通过 services.msc 启动服务管理器
(2) 在其中找到 Windows Remote Management (WS-Management) 这一项
(3) 确定该项服务正处于运行状态,并且启动类型被设置为 Automatic

2 设定本地组策略.
(1) 通过 gpedit.msc 开启本地组策略编辑器
(2) 找到 Computer Configuration > Administrative Templates > Windows Components > Windows Remote Management (WinRM) > WinRM
Service
(3) 在右侧的项目中,双击 “Allow remote server management through WinRM”
(4) 在新弹出的窗口中,选择Enabled,从而启用策略,然后再Options的设置区域,位IPv4和IPv6 filter添加规则”*”,从而使所有IP都不受到过滤器的限制。当然,这里也可以根据具体的环境进行配置,相关配置可参考下图。
Continue reading

1,933 次浏览

C#: 字符串连接 (+=) 与 StringBuilder 效率分析

在 C# 或 Java 中,我们可以使用诸如 StringBuilder, StringBuffer 等方式对大量字符串进行拼接操作。当然,我们也可以直接使用 字符串连接 (+=) 的方式进行拼接操作。但是,两种主要方式在效率上有何区别呢?我们是否需要针对这两类方式进行区别场景的使用呢?针对于此,我做了如下测试,以证明两种不同方式连接字符串的效率临界值。(关于Java中StringBuilder和StringBuffer的区别,可以参阅这篇文章

测试方法是:重复连接字符串 “Hello World!” 1次到40次,在每次连接的过程中都分别采用 String Connection (+=) 和 StringBuilder 的 Append()方法进行1000次,并分别计算出两种方法在这1000次运算过程中的获胜比率。通过多次试验,得到如下统计:

第一次:
StringBuilder Efficiency Test 1
Continue reading

1,848 次浏览

SQL Server: 删除 XML 字段的某个节点

针对于 SQL Server 中的 XML 列,如何删除其中的一个 XML 节点呢?这里有两种方法。

方法1 直接通过SQL语句将目标节点设置为 null即可,直截了当,非常容易。

方法2 如下,查询后进行修改(相关操作我封装成了一个存储过程来演示,如下存储过程会从不同位置读取数据,并通过游标寻找并处理由 Guid 格式标明的目标数据)
Continue reading

1,621 次浏览
1,527 次浏览

SQL Server: 创建 XML 索引 提升查询效率

Scenario: 最近在工作中遇到一个问题,客户访问公司产品的某报表功能时,速度极慢,在客户环境甚至达到15+分钟的页面载入时间。经分析,问题的原因是多方面的,其中最主要的一项是产品数据库(SQL Server)的一个核心字段采用了XML类型存储,先不讨论其设计的优劣,但大量的XML查询确实大大的影响到了产品体验。
Continue reading

1,641 次浏览