"LocalAccount='true'"gwmiを使っても基本的には同じ。ファイル名にしてDBをバックアップ普通のサーバー管理者はSQLでやるのでしょうが、日付をファイル名にする場合はやっぱりPowerShellの方が楽。localhost「ServerInstance」はローカルなら省略できても良さそうだが、省略するとエラーになった。ver3.02012ServerでSQLServer用PowerShell(sqlps)を開いてみたら、何やら以下のようなエラーが発生。2012)どうもユーザープロファイルで「SharePoint」のスナップインをAddしているのが宜しくない模様。何で?見てみると、PSバージョンが2.0何ですね。ん~、こんなものなのか、何か追加が必要なのか・・・。何となく、Ver3では「sqlps」自体不要なのかも?。「SSMS」でメニューに表示されるのでつい開いてしまいがちだが、こいつはあくまでも2008ServerなどにSQLServerを入れた時用かもしれない。2012Serverなら環境を判断して切り替えるくらいのスマートさがあっても良い気はするが・・・。◆型名のエイリアス(アクセラレータ)表示PowerShellでは.Netクラスへのアクセスを簡易にすべく「TypeAccelerators」なるものが用意されている。どんな時に使われるかというと、[System.Xml.XmlDocument]なんてクラスにアクセスする時に[xml]といった短い名前でのアクセスを提供してくれる。C#言語が提供する「int」や「string」といった型名と同じ感じだ。どんなものが用意されているかは以下で確認できる。"System.Management.Automation.TypeAccelerators"[psobject].Assembly.GetType($clsAccelerators)::Getここで、「Get」というのは「TypeAccelerators」クラスのStaticプロパティだ。自分でこの名前を追加することもできる。以下の例では[System.IO.Path]に[Path]という名前を付けている。我らが牟田口さんのポケットリファレンスがVer3に対応して発売されるそうです。PowerShellは本当に守備範囲が広がり、全体を俯瞰するのが難しくなっているので、この様な本があると重宝しますよね。◆全角の日付を計算する全角の日付に対して演算をするには日付型に変換してから計算し、元に戻してあげる。(そのまま計算する方法なんてあるのだろうか・・・、きっとローカルだから無いような・・・)ちょっとべたな感じいっぱいだが、とりあえずこんな感じでいけそう。◆CABファイルを展開するでは「Shell.Application」を使ったが、作成する方はこいつでは無く単独のアプリケーション「makecab.exe」を使うようだ。ファイルを作成するにサンプルがあるので使わせてもらった。そのままでは動かなかったので若干修正している。あとは「makecab.exe」に定義ファイルを渡して起動するだけ。◆関数を削除する中身を良く判らずにサンプルを取り込んで使っていると不可解なエラーに悩まされることがある。今回はそのパターンの一つ。エラーメッセージからは何が起きているのが見当がつかない。仕方がないのでステップ実行すると突然あらぬところへ飛んでいきループが始まる。サンプルで使っていたネイティブなコマンドと自分で追加した関数の名前がかぶっている。(><)ちゃんとコマンドレットっぽい関数名にすればこんなことは起きないのだが、オレオレ関数とコマンドレットの区別がつきづらく好きではない。関数名を修正しこれでOKと思ったらどうにも直らない・・・。あ~、名前を変えただけじゃなく削除しなきゃダメなのね。RunSpace」なるアドオンがあってクリアできるのだが本家PowerShell_ISEでは出来そうもない。再起動すればよいのだが、タブを沢山開いているとちょっと面倒。いう訳でピンポイントで関数を削除するには・・・。あれぇ、コマンドがみつからない。function:hoge」かな。余談だが、PowerShell_ISE君、ソースをドロップして開けないのね・・・。この間のコメント化機能といい、どうしてこんなアプリケーションの基本中の基本の機能が無いのでしょう。PowerGUIはVer3版で使うと良くフリーズするし・・・。◆CABファイルを展開するInfoPathのテンプレート(XSNファイル)をSharePoint2010からSharePoint2013に移行しようとしている。残念なことにXSNファイル内にサーバーURLがハードコードされているので、そのままでは持って行けない。テキストに変換して一括で修正できないか?最近のパターンからするとZIP展開するとテキスト(xml)ファイルが出てくるパターンかと思ったのだがそうでもなさそう。調べてみるとどうやらZIP形式ではなく、CABなんだそうな・・・。PowerShellでのCABファイル操作を調べてみると以下にサンプルがあったので使わせてもらう。ファイルを作成する展開処理を最小限に抜き出すとこんな感じ。"F:\Desktop\wk"ファイルの拡張子はXSNのままではうまくいかなかったのでCABにリネームした。最初は気づかなかったが、ミニマムにしたソースを見てみるとZIPの解凍に似ている。いうか、もしかして同じ?以前作ったZIP解凍のソースを見てみたら、同じですねぇ。拡張子をCABにしないとダメなのね・・・。◆コンストラクタを表示するTypeのGetConstructorsメソッドで確認できる。InfoPathフォーム(xsn)をアップロードするでアップロードしたテンプレートは、そのままではまだ使えない。テンプレートを使いたいサイトコレクションごとに「アクティブ化」という作業が必要になる。GUIでの作業は、サーバー側の管理サイト「サーバー全体の管理」から行う方法と、サイトコレクションの「サイトの設定」から行う方法の2通りがある。<サーバー全体の管理>「サーバー全体の管理」「アプリケーション全般設定」「フォームテンプレートの管理」をクリック「フォームテンプレートの管理」画面でテンプレートが一覧表示されるので対象のテンプレートのドロップダウンを表示させて「サイトコレクションへのアクティブ化」をクリック「フォームテンプレートのアクティブ化」画面が表示されるので、アクティブ化したいサイトコレクションを選択し「OK」をクリック<サイトコレクション・サイト設定>サイトコレクションのトップサイトを開く設定ボタンをクリックし、表示されたメニューから「サイトの設定」をクリック表示された「サイトの設定」画面から「サイトコレクションの管理」「サイトコレクションの機能」をクリック表示された「サイトコレクションの機能」画面でアップロードしたテンプレートを探し「アクティブ化」ボタンをクリックする<PowerShellでの設定>PowerShellからは「Enable-SPInfoPathFormTemplate」コマンドレットを使えば一発で設定が可能だ。サイト前回のテンプレートアップロード時に一緒にやってしまえば良いだろう。このコマンドは既に「アクティブ」な機能に対して行うとエラーが返ってくるので(無視しても良いが)一応確認してから登録することにした。アクティブな機能を取ってくるのはとりあえず以下のような感じ。value登録するInfoPathファイルがここで返ってくるコレクションに含まれるかチェックすればよい。前回のアップロードに今回の「アクティブ化」を追加したのが以下のソース。◆各ドライブにデフラグが必要か調べるのリモート版。-AutoSize「Win32_volume」オブジェクトの「DefragAnalysis」メソッドを「Invoke-WmiMethod」で呼ぶ。リモートに対してオブジェクトを渡せないので「__PATH」プロパティに持っているシリアライズされた情報を渡すって感じでしょうか。InfoPathフォーム(xsn)をアップロードする2010のSharePointでInfoPathを使ったライブラリがいくつかあるので2013に持ってきて使えるようにしたい。Templateを登録する。「サーバー全体の管理」「アプリケーションの全般設定」「フォームテンプレートの管理」をクリック表示された「フォームテンプレートの管理」画面で「フォームテンプレートのアップロード」をクリック「フォームテンプレートのアップロード」画面が表示されるので「参照」ボタンをクリックして該当の「xsn」ファイルを指定してアップロードするこれをPowerShellでやるには「Install-SPInfoPathFormTemplate」コマンドレットを使えば良い。アップロードしたい「xsn」ファイルを引数に指定するだけで簡単にアップロードできる。旧2010SharePointシステムからWebDav経由でテンプレートを取ってきてインストールするにはこんな感じになる。SharePoint◆各ドライブにデフラグが必要か調べるWin32_VolumeのDefragAnalysisメソッドが使える。自己紹介minminnana地方でSE(プログラマ)をやって20年。気づけばいつの間にやら窓際人生。このまま余生を過ごすには若干心残りな2児と2匹(ウサギ、犬)の父。SEと言っても窓際なのでブログやWEBなどにはめっぽう疎い・・・。独学で.NET系を弄ってみるがCOBOLプログラマーにはだいぶ敷居が高い。