布団が俺を呼んでいる

丘山大一のぶろぐ

PowerShell ローカルアカウント一覧の取得

どうやるのが正解なのか今一つ分からなかった。
Get-CimInstance -ClassName Win32_UserAccount -Filter "LocalAccount='true'"

下記でも取得できるが、フィルターのかかるタイミングの差か、AD環境下で沢山のユーザがひっかかってしまう場合だと遅いみたい。
あと汎用性に欠ける。
Get-CimInstance -ClassName Win32_UserAccount | Where-Object {$_.Domain -like "コンピューター名"}

GUIで 1:ユーザ追加 2:ユーザ名変更 とした場合、GUI上表示されるユーザ名とユーザプロファイル名がズレる(ユーザプロファイル名は変更前のまま)なのですが、上記のやり方だと変更後のユーザ名が取得できません。
どうやれば取得できるんだろう。

Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell Hostsファイルの更新 と 確認

ホストファイルの末尾に追記します。
Add-Content "C:\Windows\System32\drivers\etc\hosts"  "XXX.XXX.XXX.XXX`thogehoge.hoge"
IPの直後にある「`t」はタブ文字です。
入力する場合は「Shift+@」+「t」で。

追記後、確認したいなら次の一文。
start notepad "C:\Windows\System32\drivers\etc\hosts"

関係者に、「IP記述して~」という代わりに、このスクリプト実行して~の方が、楽・・・・・・
かと思ったけど、手間はあまり変わらないか。
Hostsファイルの開き方よりも、PSスクリプトの実行の仕方の方が知られてないもんなあ・・・・・・。


【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)

PowerShell Windows Server 終了時の理由入力を止める

正攻法は
「ローカルグループポリシーエディター」-「コンピューターの構成」-「管理用テンプレート」-「システム」-「シャットダウン イベントの追跡ツールを表示する」から。

でもあえてPowerShell によるレジストリ書き換えで。

ちなみに、このレジストリ、WIndows Server 2012 R2 で確認した限りでは、初期値ではキーが存在しません。
正確にいえば、初期値の「未構成」ではエントリが存在しないようです。
ですので、まずはエントリを作成。
New-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Reliability"
それでから、キーを作成します。
New-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Reliability" ShutdownReasonOn  -Value "1"
これでOK。

【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)

NULL の容量って?

NULL を入れてしまうと、一般にパフォーマンスが落ちると言われていますが、果たしてファイルサイズに差は出るのでしょうか。
ちょっと試してみました。
以下、SQL Server2008R2で確認
詳細に調べられるだけの力量が無いので、SSMSで自動作成されたSQLをベースにザックリSQLです。

やっていることは、
1 空のテーブルを作成
2 20個の列を作成
3 1000万レコード挿入
4 ファイルサイズを確認
基本的に以上です。
比較したのは、
1 NULL 許容 × NULL格納
2 NULL 許容 × 空文字格納
3 NOT NULL × 空文字格納
の3パターン。

ベースとなる1のSQLは下記の通りです。

CREATE DATABASE [NullTestDB] ON  PRIMARY 
( NAME = N'NullTestDB', FILENAME = N'XXXXXXXXXXXXX\NullTestDB.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'NullTestDB_log', FILENAME = N'XXXXXXXXXXXXXXXXXXXXX\NullTestDB_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [NullTestDB] SET COMPATIBILITY_LEVEL = 100
GO
ALTER DATABASE [NullTestDB] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [NullTestDB] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [NullTestDB] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [NullTestDB] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [NullTestDB] SET ARITHABORT OFF 
GO
ALTER DATABASE [NullTestDB] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [NullTestDB] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [NullTestDB] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [NullTestDB] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [NullTestDB] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [NullTestDB] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [NullTestDB] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [NullTestDB] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [NullTestDB] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [NullTestDB] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [NullTestDB] SET  DISABLE_BROKER 
GO
ALTER DATABASE [NullTestDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [NullTestDB] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [NullTestDB] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [NullTestDB] SET READ_COMMITTED_SNAPSHOT OFF 
GO
ALTER DATABASE [NullTestDB] SET  READ_WRITE 
GO
ALTER DATABASE [NullTestDB] SET RECOVERY FULL 
GO
ALTER DATABASE [NullTestDB] SET  MULTI_USER 
GO
ALTER DATABASE [NullTestDB] SET PAGE_VERIFY CHECKSUM  
GO
USE [NullTestDB]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [NullTestDB] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO



BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Table_1
(
C1 nvarchar(MAX) NULL,
C2 nvarchar(MAX) NULL,
C3 nvarchar(MAX) NULL,
C4 nvarchar(MAX) NULL,
C5 nvarchar(MAX) NULL,
C6 nvarchar(MAX) NULL,
C7 nvarchar(MAX) NULL,
C8 nvarchar(MAX) NULL,
C9 nvarchar(MAX) NULL,
C10 nvarchar(MAX) NULL,
C11 nvarchar(MAX) NULL,
C12 nvarchar(MAX) NULL,
C13 nvarchar(MAX) NULL,
C14 nvarchar(MAX) NULL,
C15 nvarchar(MAX) NULL,
C16 nvarchar(MAX) NULL,
C17 nvarchar(MAX) NULL,
C18 nvarchar(MAX) NULL,
C19 nvarchar(MAX) NULL,
C20 nvarchar(MAX) NULL
)  ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.Table_1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

Declare @p_NumberOfRows Bigint 
Select @p_NumberOfRows=10000000; 
With Base As
  (
    Select 1 as n
    Union All
    Select n+1 From Base Where n < Ceiling(SQRT(@p_NumberOfRows))
  ),
  Expand As
  (
    Select 1 as C From Base as B1, Base as B2
  ),
  Nums As
  (
    Select Row_Number() OVER(ORDER BY C) As n From Expand
  )
INSERT INTO Table_1
  Select n, null,null,null,null,null,null,null,null,null,
       null,null,null,null,null,null,null,null,null,null     
    from Nums  Where n<=@p_NumberOfRows
OPTION (MaxRecursion 0); 

EXEC sp_spaceused; 

2、3についてはそれぞれ列の生成、Insert文が異なるだけです。
なお、最初の一列目には値が格納されていますが、これはただ単にループを回した結果を確認したかっただけです。

さて、それでは結果です。
1 NULL 許容 × NULL格納:285056 KB
2 NULL 許容 × 空文字格納:285056 KB
3 NOT NULL × 空文字格納:285056 KB

全然変わりませんでした!!
あれー?
これじゃ記事として微妙(´・ω・`)

もしかしたら、テーブルや列の設定によって変わるのかもしれません。
あるいは1000万レコードでは差異が出ないとか。

気が向いたら他のRDBMSや設定でも試してみます。

ひと目でわかるMicrosoft SQL Server 2008 (マイクロソフト公式解説書)

新品価格
¥2,916から
(2015/10/7 22:05時点)

SQL Server 2008ビギナーズガイド

価格:5,184円
(2015/10/7 22:06時点)
感想(0件)

PowerShell コマンドの履歴

下記のように実行すると、hoge.txtに実行コマンドの履歴が残ります。

Start-Transcript -Path D:\hoge.txt

超便利です。早く調べておけばよかった。
まあ色々と機能・問題点があるようですが、まず簡単なことから覚えていくのが当ブログのモットー。

Windows PowerShell超入門 [4.0対応]

新品価格
¥2,160から
(2015/10/5 23:59時点)

Windows PowerShell超入門 [ 新丈径 ]

価格:2,160円
(2015/10/5 23:59時点)
感想(1件)

PowerShell Windows Server 起動時にサーバーマネージャーの自動起動を停止する

いやまあ、手動でやった方が速いですけど。
一括で基本設定したくなった時用のメモということで。
・・・・・・まあレジストリ弄っているだけなんですが。

Set-ItemProperty "HKCU:\Software\Microsoft\ServerManager" -Name "DoNotOpenServerManagerAtLogon" -Value "1"

どこかで役に立つ・・・・・・立たないか。

【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)

OneDirve アプリの更新に失敗したら、Ofiiceも一緒に全滅した

会社でプギャーしました。

Office365 のOneDriveにブラウザ経由でアクセスするの面倒だなー、と思ってアプリをインストールしました。
が、途中で失敗。
しかし、資料作成を依頼されていたので、ひとまずおいておき、Wordファイルを開こうとデスクトップのアイコンをダブルクリック。
「このファイルを開く方法を選んでください」
・・・・・・アレ?
さっきまで普通に関連付けされて開いていたのに。
まあインストールにコケた影響で、関連付けが外れてしまったのだろう、もう一度設定しなおせば・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・
・・・・・・
Program Files の中に、exeが無い・・・・・・(汗)
エクセルもワードも消えており、残っているのはアイコンやDLL。
これじゃあ開けなくてあたりまえですねー。
うわーん(泣)

うかつに色々試すと傷が広がる可能性があったので、システムの復元で戻しました。
同じような現象に当たった人っているんだろうか・・・・・・。
ちなみに、AD環境+Office365 (Office2013相当)です。

(無料電話サポート付)できる Office 365 Business/Enterprise対応 2015年度版 (できるシリーズ)

新品価格
¥1,944から
(2015/10/3 12:58時点)

できるOffice 365(2015年度版) [ インサイトイメージ ]

価格:1,944円
(2015/10/3 12:58時点)
感想(3件)

PowerShell Get-ChildItem の使い方

備忘。
Get-ChildItem で再帰でファイルを探し、結果を出力する。
  • Get-ChildItem D:\ -Recurse -Include FD* >D:\List.txt
  • Get-ChildItem D:\ -Recurse -Include FD*, *.vfd >D:\List.txt
※「\」は「¥(半角)」となります。

【改訂新版】 Windows PowerShell ポケットリファレンス

新品価格
¥3,002から
(2015/10/3 12:43時点)

Windows PowerShellポケットリファレンス改訂新版 [ 牟田口大介 ]

価格:3,002円
(2015/10/3 12:44時点)
感想(2件)

System Center 2012R2 の評価ガイドの取得先

よく探し回るので備忘で置いておく。

System Center 2012 も混じって出てくるから探しづらくて……。


Windows Server 2012 R2テクノロジ入門 (TechNet ITプロシリーズ)

新品価格
¥5,076から
(2015/9/29 00:00時点)

Windows Server 2012 R2テクノロジ入門 [ 山内和朗 ]

価格:5,076円
(2015/9/29 00:01時点)
感想(0件)

Windows Server 2008 R2 割り当てメモリが少ない時の Windows Update の限界

備忘。
環境によって異なるので、あくまで目安の一つとして。

下記のの環境下で作成された2008R2だと、Windows Updateが147個目で停止(進まなくなる)した。
・ホストサーバとして、Windows Server 2012R2 GUI にHyper-V機能を追加、その仮想環境下に作成。
・インストールOSはWindows Server 2008R2 SP1 GUI
・割り当てメモリ2G

メモリを増やせばもう少しいける?
この時は、Windows Updateを少しずつ実行することで対応。
約90個はいけた。

WINDOWS SERVER 2008 R2 テクノロジ入門 (マイクロソフト公式解説書)

新品価格
¥5,076から
(2015/9/24 21:34時点)

【送料無料】 Windows Server 2008 R2 テクノロジ入門 マイクロソフト公式解説書 / 山内和朗 【単行本】

価格:5,076円
(2015/9/24 21:34時点)
感想(0件)