@@ -22,9 +22,14 @@ public override void Execute(CommandContext context)
2222
2323 string warning = scriptItem [ ScriptItemFieldNames . PreExecutionWarning ] ;
2424 string showResults = scriptItem [ ScriptItemFieldNames . ShowResults ] ;
25- string itemId = context . Items [ 0 ] . ID . ToString ( ) ;
26- string itemDb = context . Items [ 0 ] . Database . Name ;
25+ string itemId = string . Empty ;
26+ string itemDb = string . Empty ;
2727
28+ if ( context . Items . Length > 0 )
29+ {
30+ itemId = context . Items [ 0 ] . ID . ToString ( ) ;
31+ itemDb = context . Items [ 0 ] . Database . Name ;
32+ }
2833 if ( String . IsNullOrEmpty ( warning ) )
2934 {
3035 ExecuteScript ( itemId , itemDb , scriptId , scriptDb , showResults ) ;
@@ -75,7 +80,11 @@ public static void ExecuteScript(string itemId, string itemDb, string scriptId,
7580 }
7681 else
7782 {
78- Item item = Factory . GetDatabase ( itemDb ) . GetItem ( new ID ( itemId ) ) ;
83+ Item item = null ;
84+ if ( ! string . IsNullOrEmpty ( itemDb ) && ! string . IsNullOrEmpty ( itemId ) )
85+ {
86+ item = Factory . GetDatabase ( itemDb ) . GetItem ( new ID ( itemId ) ) ;
87+ }
7988 Item scriptItem = Factory . GetDatabase ( scriptDb ) . GetItem ( new ID ( scriptId ) ) ;
8089 ScriptSession scriptSession = null ;
8190
@@ -85,11 +94,13 @@ public static void ExecuteScript(string itemId, string itemDb, string scriptId,
8594 scriptSession =
8695 ScriptSessionManager . GetSession ( persistentSessionId , ApplicationNames . Context , true ) ;
8796 scriptSession . Initialize ( ! string . IsNullOrEmpty ( persistentSessionId ) ) ;
88- scriptSession . ExecuteScriptPart ( "Set-HostProperty -HostWidth 80" ) ;
97+ scriptSession . ExecuteScriptPart ( string . Format ( "Set-HostProperty -HostWidth {0}" , scriptSession . Settings . HostWidth ) ) ;
8998 scriptSession . ExecuteScriptPart ( scriptSession . Settings . Prescript ) ;
90- scriptSession . ExecuteScriptPart (
91- String . Format (
92- "cd \" {0}:{1}\" " , item . Database . Name , item . Paths . Path . Replace ( "/" , "\\ " ) . Substring ( 9 ) ) ) ;
99+ if ( item != null )
100+ {
101+ scriptSession . SetItemLocationContext ( item ) ;
102+ }
103+
93104 scriptSession . ExecuteScriptPart ( scriptItem [ ScriptItemFieldNames . Script ] ) ;
94105 }
95106 finally
0 commit comments